我想为我的MVC3应用程序构建一个RESTful Json Api.我需要帮助处理多个Http Verbs来操作单个对象实例.
我读过/研究/尝试过的内容
MVC属性(HttpGet,HttpPost等)允许我让一个控制器具有共享相同名称的多个动作,但它们仍然必须具有不同的方法签名.
在 MVC启动之前路由模块中发生路由约束并且会导致我有4个显式路由,并且仍然需要单独命名的控制器操作.
构建自定义Http Verb属性可用于获取用于访问操作的动词,然后在调用操作时将其作为参数传递 - 然后代码将处理切换案例.这种方法的问题是某些方法需要授权,应该在动作过滤器级别处理,而不是在动作本身内部.
http://iwantmymvc.com/rest-service-mvc3
要求/目标
单个实例对象的一个路由签名,MVC预计将处理四个主要的Http动词:GET,POST,PUT,DELETE.
context.MapRoute("Api-SingleItem", "items/{id}",
new { controller = "Items", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)当URI未传递Id参数时,操作必须处理POST和PUT.
public JsonResult Index(Item item) { return new JsonResult(); }
Run Code Online (Sandbox Code Playgroud)当Id参数传递给URI时,单个操作应该处理GET和DELETE.
public JsonResult Index(int id) { return new JsonResult(); }
Run Code Online (Sandbox Code Playgroud)题
我怎样才能有多个动作(共享相同的名称和方法签名),每个动作都响应一个唯一的http动词.期望的例子:
[HttpGet]
public JsonResult Index(int id) { /* _repo.GetItem(id); */}
[HttpDelete]
public …Run Code Online (Sandbox Code Playgroud)