为什么要在 Web API 中指定路由参数类型

本文关键字:路由 参数 类型 Web API 为什么 | 更新日期: 2023-09-27 17:56:30

我有一个带有路由参数的 web api 端点。它适用于或不带路由参数类型。我只想知道为什么要在下面的代码中指定这个?

[HttpGet]
[Route("{myId:int}")]
public HttpResponseMessage GetData([FromUri] int myId)
{
    //code here
}

此片段[Route("{myId:int}")] .为什么要指定 int?这个[FromUri] int myId中已经有一个整数.路由的int不是多余的吗?这有什么原因吗?

为什么要在 Web API 中指定路由参数类型

请看这个例子:

[Route("users/{id:int}"]
public User GetUserById(int id) { ... }
[Route("users/{name}"]
public User GetUserByName(string name) { ... }

在这里,仅当 URI 的"id"段为整数时,才会选择第一个路由。否则,将选择第二条路线。


所以在您的情况下,这不是必需的。但是,如果您需要更智能的路由解析,这将是必要的。您可以使用许多不同的约束。例如{x:minlength(10)} - 最小长度为 10 的字符串。 {x:max(10)} - 匹配最大值为 10 的整数。 {x:regex(^'d{3}-'d{3}-'d{4}$)} - 正则表达式约束等

您可以在文档中找到所有可用的约束。