我有一个带有路由参数的web api端点。它可以使用或不使用route参数类型。我只是想知道为什么在下面的代码中指定它?
[HttpGet]
[Route("{myId:int}")]
public HttpResponseMessage GetData([FromUri] int myId)
{
//code here
}
此代码段[Route("{myId:int}")]
。为什么要指定int?此[FromUri] int myId
中已有一个int。这条路线的int不是多余的吗?这有什么理由吗?
答案 0 :(得分:17)
请看这个例子:
[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}$)}
- 正则表达式约束等。
您可以在documentation中找到所有可用的约束。