相关疑难解决方法(0)

MVC3 RESTful API路由和Http动词处理

我想为我的MVC3应用程序构建一个RESTful Json Api.我需要帮助处理多个Http Verbs来操作单个对象实例.

我读过/研究/尝试过的内容

MVC属性(HttpGet,HttpPost等)允许我让一个控制器具有共享相同名称的多个动作,但它们仍然必须具有不同的方法签名.

MVC启动之前路由模块中发生路由约束并且会导致我有4个显式路由,并且仍然需要单独命名的控制器操作.

ASP.NET MVC AcceptVerbs和注册路由

构建自定义Http Verb属性可用于获取用于访问操作的动词,然后在调用操作时将其作为参数传递 - 然后代码将处理切换案例.这种方法的问题是某些方法需要授权,应该在动作过滤器级别处理,而不是在动作本身内部.

http://iwantmymvc.com/rest-service-mvc3


要求/目标

  1. 单个实例对象的一个​​路由签名,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)
  2. 当URI未传递Id参数时,操作必须处理POSTPUT.

    public JsonResult Index(Item item) { return new JsonResult(); }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 当Id参数传递给URI时,单个操作应该处理GETDELETE.

    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)

rest asp.net-mvc asp.net-mvc-routing asp.net-mvc-3

9
推荐指数
1
解决办法
6347
查看次数