Web Api始终接受控制器方法的POST动词

时间:2017-08-03 20:37:10

标签: asp.net post routing asp.net-web-api2 rpc

使用操作名称路由,例如:

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

我希望我的所有控制器方法都接受POST动词,有没有办法配置路由映射,这样我就不需要为所有控制器方法添加HttpPost属性了? / p>

我希望做类似的事情:

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

而不是:

public class MyController: ApiController
 {
     [HttpPost]
     public List<int> GetItems() { ... } 

     [HttpPost]
     public void DeleteItem(int id) { ... }

     [HttpPost]
     public void OtherMethod() { ... }
 }

1 个答案:

答案 0 :(得分:2)

如果方法名称以动词(例如Get,Delete等)开头,则默认动词将匹配该动词。如果方法名称的开头不匹配任何动词,则webapi默认为HttpPost。因此,您可以通过重命名控制器方法来避免放置[HttpPost]属性。

请参阅:Is there a default verb applied to a Web API ApiController method?