2014-08-28 22 views
0

起初我普通GET/POST/PUT/DELETE請求到我的服務器,這config.route我的網站的API已經足夠:定製和網絡API常規方法

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

然後,我需要自定義操作(例如,而不是API /用戶/ 212 - 搞定了,我想API/GetAllUsers - GET)

所以我改變了配置到:

config.Routes.MapHttpRoute(
      name: "DefaultApiWithAction", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { action = "get" ,id = RouteParameter.Optional } 
      ); 
     config.Routes.MapHttpRoute(
      name: "DefaultApiGet", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { action = "get", id = RouteParameter.Optional } 
      ); 
     config.Routes.MapHttpRoute(
      name: "DefaultApiPost", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { action = "post", id = RouteParameter.Optional } 
      ); 
     config.Routes.MapHttpRoute(
      name: "DefaultApiPut", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { action = "put", id = RouteParameter.Optional } 
      ); 
     config.Routes.MapHttpRoute(
      name: "DefaultApiDelete", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { action = "delete", id = RouteParameter.Optional } 
      ); 

現在的問題,是我無法達到經典的GET('DefaultApiGet)。

編輯

換句話說,如果我有,我想他的一個職位用戶,或所有的帖子,然後我希望能夠做到這一點(用戶ID = 12345): 「 API/UserPost/12345' - 獲得用戶的最後一個職位12345 和 'API/UserPost/GETALL/12345' - 獲得用戶的所有帖子12345

+0

你能嘗試在你的「D」中刪除'id = RouteParameter.Optional' efaultApiWithAction「路線? – Milen 2014-08-28 08:46:52

+0

我試過了,但現在POST不起作用。我得到:405 - 方法不允許 – Lichte 2014-08-28 08:54:23

+0

這是任何幫助:http://stackoverflow.com/questions/23293782/mvc-web-api-405-method-not-allowed – Milen 2014-08-28 09:02:39

回答

0

的問題和解決方案是很好的解釋here