WebApi 带属性路由介绍 参见:WebApi路由机制详解
内容详实,举例简单易懂。
但是该文中没有对带属性路由的另一种方式做详细介绍,即在HttpGet、HttpPut、HttpPost、HttpDelete 这些标签中添加属性。以下以[HttpGet("{id}", Name = “Get”)] 为例
在Controller中定义属性路由
[
```csharp
Route("api/[controller]")]
public class UserManageController : Controller
{
// GET: api/UserManager
[HttpGet]
public IActionResult GetUserInfoAll()
{
return new string[] { "value1", "value2" };
}
// GET: api/UserManager/5
[HttpGet("{id}", Name = "GetTest")]
[ActionName("Get1")]
public string Get()
{
return "value";
}
}
(1)使用 http://localhost:5000/api/userManage 请求,返回
value1,
value2
属性路由中没有定义action,同时存在多条Get方法,但是第二条Get方法中带有了特定路由属性,因此匹配时自动排除,默认匹配到GetUserInfoAll方法。
(2)使用 http://localhost:5000/api/userManage/GetUseInfoAll 请求,返回
value
由于属性路由中没有定义action,使用URl访问时,此时“GetUseInfoAll ”匹配的是“{id}”,即路由规则为"api/[controller]/{id}" 如果将id强制定义为整数则不会返回值,无法访问。
(3)[HttpGet("{id}", Name = “Get”)] 中的Name值,目前测试可以用于寻址,其它作用不明
string uri = Url.Link(“GetTest2”, id = 1);
返回http://localhost:5000/Get1/1