問題
怎么樣可以使用更貼近資源(Controller,Action)的方式定義路由。
解決方案
可以使用屬性路由直接在資源級別聲明路由。只要簡單的在 Action 上使用屬性路由 RouteAttribute,然后傳一個相關(guān)路由模板就可以。屬性路由與集中式路由在路由模板含義上基本是一樣的,所有路由參數(shù)應(yīng)該使用花括號,同時要與使用的 Action 相匹配。直接式路由支持默認(rèn)路由,可選參數(shù),約束。詳細(xì)分析請往下走。
1 [Route("api/teams/{id}")] 2 public Team GetTeam(int id) 3 { 4 //忽略邏輯 5 }
要是啟用屬性路由的話,需要在應(yīng)用程序啟動的位置,使用 HttpConfiguration 調(diào)用 MapAttributeRoutes 的擴(kuò)展方法。
Config.MapHttpAttributeRoutes();
工作原理
一個叫做 Attribute Routing 的開源類庫已經(jīng)成為了 ASP.NET WEB API 2 架構(gòu)的核心部分。隨之而來的是,解決了集中式路由在維護(hù)上給我們帶來的痛苦,允許我們直接在 Controller 和 Action 上聲明路由。
對