gpt4 book ai didi

c# - Web Api 方法接受字符串、整数、字母数字

转载 作者:行者123 更新时间:2023-11-30 21:55:19 24 4
gpt4 key购买 nike

我正在研究一些 Web Api 方法,遇到了一个场景,我们传递三种不同类型的参数:数字、字符串和字母数字值。

这是我的路由信息​​:

string alphanumeric = @"^[a-zA-Z]+[a-zA-Z0-9,_ -]*$";
string numeric = @"^\d+$";

config.Routes.MapHttpRoute(
name: "DefaultApiControllerActionName",
routeTemplate: "api/{controller}/{action}/{name}",
defaults: null,
constraints: new { action = alphanumeric }
);

config.Routes.MapHttpRoute(
name: "DefaultApiControllerActionId",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: null,
constraints: new { action = alphanumeric, id = numeric }
);

有了这条路线信息,我可以得到字符串和字母数字值,但不能得到数字(通过相同的方法)。这是我的代码:

public IEnumerable<Deliveries> GetByAdvanced(string name)
{
var deliveries = ...

return deliveries;
}

例如Web API URL 示例

现在,如果我添加另一个方法来处理 int 值,它就可以正常工作。例如下面的代码

public IEnumerable<Deliveries> GetByAdvanced(int id)
{
var deliveries = ...

return deliveries;
}

这是接受这些值的正确方法吗?

最佳答案

如果它只会影响一种方法,那么您可以尝试 Attribute Routing在 Controller 中而不是修改路由配置。

试试下面的方法

[Route("Api/Deliveries/{id}/{StringVal}/{AlphaVal}")]
public IEnumerable<Deliveries> GetByAdvanced(int id, string StringVal, string AlphaVal)
{
var deliveries = ...

return deliveries;
}

关于c# - Web Api 方法接受字符串、整数、字母数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32381567/

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