3
我有一个带有路由参数的web api终点。它可以使用或不使用路由参数类型。我只想知道为什么在下面的代码中指定它?为什么在web api中指定路由参数类型?
[HttpGet]
[Route("{myId:int}")]
public HttpResponseMessage GetData([FromUri] int myId)
{
//code here
}
这段代码[Route("{myId:int}")]
。为什么指定int?这个[FromUri] int myId
已经有一个int了。路线不会是多余的?这有什么理由吗?
其实并不完全。您需要指定'Order'属性('[Route(“users/{id:int}”,Order = 0)]'[Route(“users/{name}”,Order = 1)]') 。 .NET反射在读取属性时并不保证顺序,因此它们可能以错误的顺序输入到路由表中(随机,并且在不同的编译时可能会有所不同)。在这种情况下,需要首先执行带约束的路由。 – NightOwl888
哇。我今天学了些新东西。这非常优雅。现在我要回去改变我的一些终点来遵守这一点。 – Luke101