2012-10-02 34 views
0

讓我們假設我想有一個控制器標準CRUD操作:兩個CRUD和非CRUD操作正確路線

API /值 - IEnumerable的獲取() API /價值/ 1 - 獲取(INT ID) API /值 - 發佈([FromBody]字符串值) API /值/ 5 - 將(INT ID,[FromBody]字符串值) API /值/ 5 - 刪除(INT ID)

但我想有額外的操作,如:

api/values/someoperation1 API /價值/ searchbysomething ...等

具有低於該第二路線不利於

 config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}" 
     ); 

回答

0

默認情況下,不可能在一個混合REST風格的路由和RPC樣式路由單個控制器。

在ASP.NET Web Stack的Codeplex上有一個開放的問題 - http://aspnetwebstack.codeplex.com/workitem/184

對您而言,唯一合理的解決方案是爲每個資源設置2個控制器 - 單獨一個用於CRUD,另一個用於非CRUD(RPC)類型的操作。