问题
怎么样可以使用更贴近资源(Controller,Action)的方式定义路由。
解决方案
可以使用属性路由直接在资源级别声明路由。只要简单的在 Action 上使用属性路由 RouteAttribute,然后传一个相关路由模板就可以。属性路由与集中式路由在路由模板含义上基本是一样的,所有路由参数应该使用花括号,同时要与使用的 Action 相匹配。直接式路由支持默认路由,可选参数,约束。详细分析请往下走。
1 [Route("api/teams/{id}")] 2 public Team GetTeam(int id) 3 { 4 //忽略逻辑 5 }
要是启用属性路由的话,需要在应用程序启动的位置,使用 HttpConfiguration 调用 MapAttributeRoutes 的扩展方法。
Config.MapHttpAttributeRoutes();
工作原理
一个叫做 Attribute Routing 的开源类库已经成为了 ASP.NET WEB API 2 架构的核心部分。随之而来的是,解决了集中式路由在维护上给我们带来的痛苦,允许我们直接在 Controller 和 Action 上声明路由。
对
