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() { ... }
  • 相关阅读:
    openstack命令行
    Hub, bridge, switch, router, gateway的区别
    openstack奠基篇:devstack (liberty)于centos 7安装
    git常用命令备忘
    如何利用gatling创建一个性能测试例
    如何通过源码生成Gatling可执行工具
    博客园的第一篇博文
    Spring Oauth2 with JWT Sample
    你首先是一个人,然后你才是程序员。
    Maven——快速入门手册(学习记录) ****
  • 原文地址:https://www.cnblogs.com/goodlucklzq/p/4415273.html
Copyright © 2011-2022 走看看