對於默認的get,post,put和delete方法,我添加了一些更多的getter,其中一些獲取參數。在實體框架Web API中爲路由設置默認操作
public class AController
{
// GET api/A
[HttpGet]
public HttpResponseMessage GetAs() { ... }
// GET api/A/5
[HttpGet]
public HttpResponseMessage GetA(int id) { ... }
// GET api/A/GetThis
[HttpGet]
public HttpResponseMessage GetThis() { ... }
// GET api/A/GetThat
[HttpGet]
public HttpResponseMessage GetThat() { ... }
// GET api/A/GetMoreInfoAbout/5
[HttpGet]
public HttpResponseMessage GetMoreInfoAbout(int id) { ... }
// PUT api/A
[HttpPut]
public HttpResponseMessage PutA(int id, A a) { ... }
// POST api/A
[HttpPost]
public HttpResponseMessage PostA(A a) { ... }
// DELETA api/A
[HttpDelete]
public HttpResponseMessage DeleteA(int id) { ... }
}
我所做的到現在是確定各方法的新途徑,所以我WebApiConfig.cs得到炸燬和它變得越來越不透明,每個新的控制器和方法。
我想這更多的通用路由:
config.Routes.MapHttpRoute(
name: "ApiById",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new { id = @"^[0-9]+$" }
);
config.Routes.MapHttpRoute(
name: "ApiByActionId",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: null,
constraints: new { id = @"^[0-9]+$" }
);
config.Routes.MapHttpRoute(
name: "ApiByAction",
routeTemplate: "api/{controller}/{action}",
defaults: null
);
/* Default route */
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
- 我在哪裏必須把默認這樣
GET api/A
將被匹配到GetAs()
而POST api/A
將匹配PostA(A a)
? - 同
GET api/A/5
。
雖然鏈接可能有用,但您應該將答案放在此處,因爲更改鏈接會使您的答案無效。 –