• 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() { ... }
  • 相关阅读:
    Select loop
    shell学习
    硬链接与软连接的区别_(转)
    Windows 远程桌面连接Ubuntu16.04图像界面
    C# mysql 连接Apache Doris
    Hadoop 2.7.3 分布式集群安装
    ubuntu 16.04安装Chrome离线crx插件包
    RPC框架之Thrift分析(转)
    ubuntu 16.04安装ibus中文输入法
    secureCRT下linux rz命令上传文件失败或变小(破损)的问题解决方法
  • 原文地址:https://www.cnblogs.com/goodlucklzq/p/4415273.html
Copyright © 2020-2023  润新知