我正在使用 Asp.NET MVC 4 控制器(不是 WebAPI)来实现真正的 RESTful API,其中单个 URL 需要基于 HTTP 方法类型指向不同的操作方法。
因此,诸如 mysite.com/Widget/1 之类的 URL 可以转到以下三种操作方法中的任何一种:
[HttpPut]
public JSONResult Update(int widgetId) {}
[HttpDelete]
public JSONResult Delete(int widgetId) {}
[HttpGet]
public JSONResult Get(int widgetId) {}
将一个 URL 路由到这些不同的操作方法的最佳方法是什么?
我遇到了ActionName过滤器,我可以将每个操作方法设置为相同。然后,我的 RouteConfig 类将始终指向相同的 ActionName,并且 MVC 将根据 HTTP 方法类型属性选择正确的操作方法。
[HttpPut]
[ActionName("CRUD")]
public JSONResult Update(int widgetId) {}
[HttpDelete]
[ActionName("CRUD")]
public JSONResult Delete(int widgetId) {}
[HttpGet]
[ActionName("CRUD")]
public JSONResult Get(int widgetId) {}
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Widget", action = "CRUD", id = UrlParameter.Optional }
);
不过有更好的方法吗?