zoukankan      html  css  js  c++  java
  • WebApi官网学习记录---web api中的路由

    如果一条路由匹配,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() { ... }
  • 相关阅读:
    【经验】AngularJS
    jquery复选框选择 DoTop
    SQL查询数据库名、表名、列名 DoTop
    C#读取配置文件中的信息 DoTop
    ASP.NET获取工程根目录的方法集合 DoTop
    ASP.NET前台Html.DropDownList的使用 DoTop
    JS的同步和异步加载
    tornado nginx 同源(AccessControlAllowOrigin)错误处理记录
    sql join 的一次小使用
    关于CSS3 animation 属性在ie edge浏览器中不能工作
  • 原文地址:https://www.cnblogs.com/goodlucklzq/p/4415273.html
Copyright © 2011-2022 走看看