gpt4 book ai didi

c# - 多个可选参数 web api 属性路由

转载 作者:行者123 更新时间:2023-11-30 12:40:20 28 4
gpt4 key购买 nike

我是属性路由的新手,我不确定这是否可行。

我有一个属性路由,它可以像这样正常工作:

[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag)

现在我想添加一些额外的可选参数来缩小我的搜索范围,所以我想添加 2 个额外的可选参数。

我尝试过的:

[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3?}/{categoryId:int?}/{tagIds?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , int? categoryId = null, int?[] tagIds = null)

如果我的调用是 /api/controller/1/2,这会正常工作,但当涉及到 /api/controller/1 时,会出现 404 错误。

我怎样才能做到这一点?

编辑 1:Nkosi 在下面的回答有效,但需要进行额外修改。

[HttpGet]
[Route("GetIssuesByFlag/{flag:int=3}/{tagIds?}/{categoryId:int?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , List<int> tagIds, int? categoryId = null )

列表或数组必须排在第二位,因为如果没有提供值,它会自动为 null,并且不能用 = null 标记为可选。

最佳答案

{flag:int=3?} 是问题所在。它可以是可选的 {flag:int?},在操作中具有默认值,也可以是 {flag:int=3}

[HttpGet]
Route("GetIssuesByFlag/{flag:int=3}/{categoryId:int?}/{tagIds?}")]
public IEnumerable<IssueDto> GetIssuesByFlag(int flag , int? categoryId = null, int?[] tagIds = null)

您目前有 3 个可选参数。当您只有 1 个值的路由表时,您将不知道您指的是哪个可选参数,因此 404

关于c# - 多个可选参数 web api 属性路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42114879/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com