码迷,mamicode.com
首页 > Windows程序 > 详细

WebApi官网学习记录---web api中的路由

时间:2015-04-10 19:59:50      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

如果一条路由匹配,WebAPI选择controller和action通过如下方式:

1.找到controller,将"controller"赋值给{controller}变量

2.寻找action,web api查看http的请求方式,然后寻找一个以对应请求方式开头的action,如Get请求,需要寻找一个名为Get...的action,这种方式仅支持Get,Post,Put和Delete操作。

除了依据Http请求的方式,还可以显示为action指定http method通过HttpGetHttpPutHttpPost和 HttpDelete这些attribute

public class ProductsController : ApiController
{
    [HttpGet]
    public Product FindProduct(id) {}
}    

为一个action指定多个可以接受的http method

public class ProductsController : ApiController
{
    [AcceptVerbs("GET", "HEAD")]
    public Product FindProduct(id) { }

    // WebDAV method
    [AcceptVerbs("MKCOL")]
    public void MakeCollection() { }
}

对于默认的路由模板,web api使用http method来选择action,我们可以创建一个包含action这个占位符的路由

routes.MapHttpRoute(
    name: "ActionApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

可以重写action的名字通过使用ActionName这个attribute【如果使用默认的路由模板,这种修改acting的名字方式也没用了】

public class ProductsController : ApiController
{
    [HttpGet]
    [ActionName("Thumbnail")]
    public HttpResponseMessage GetThumbnailImage(int id);

    [HttpPost]
    [ActionName("Thumbnail")]
    public void AddThumbnailImage(int id);
}

NonAction这个attribute可以将method标记为不是一个action,此时即使通过路由匹配到了这个方法。

// Not an action method.
[NonAction]  
public string GetPrivateData() { ... }

 

WebApi官网学习记录---web api中的路由

标签:

原文地址:http://www.cnblogs.com/goodlucklzq/p/4415273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!