使用操作名称路由,例如:
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() { ... }
}
答案 0 :(得分:2)
如果方法名称以动词(例如Get,Delete等)开头,则默认动词将匹配该动词。如果方法名称的开头不匹配任何动词,则webapi默认为HttpPost。因此,您可以通过重命名控制器方法来避免放置[HttpPost]属性。
请参阅:Is there a default verb applied to a Web API ApiController method?