问题

怎么样可以使用更贴近资源(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 上声明路由。

 

我想了解如何学习

姓名:
手机:
留言: