WebAPI的路由规则

1.自定义路由

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 路由
            config.MapHttpAttributeRoutes();

            //1.默认路由
            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            //2.自定义路由一:匹配到action
            config.Routes.MapHttpRoute(
                name: "ActionApi",
                routeTemplate: "actionapi/{controller}/{action}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            //3.自定义路由二
            config.Routes.MapHttpRoute(
                name: "TestApi",
                routeTemplate: "testapi/{controller}/{ordertype}/{id}",
                defaults: new { ordertype="aa", id = RouteParameter.Optional }
            );
        }
    }

得到了控制器对象之后,Api引擎通过调用IHttpActionSelector这个接口的SelectAction()方法去匹配action。这个过程主要包括:

  • 解析当前的http请求,得到请求类型(是get、post、put还是delete)
  • 如果路由模板配置了{action},则直接取到url里面的action名称
  • 解析请求的参数

如果路由模板配置了{action},那么找到对应的action就很简单,如果没有配置action,则会首先匹配请求类型(get/post/put/delete等),然后匹配请求参数,找到对应的action。

        [HttpGet]
        public IHttpActionResult GetById(int id)
        {
            return Ok<string>("Success" + id );
        }

        [HttpPost]
        public HttpResponseMessage PostData(int id)
        {
            return Request.CreateResponse();
        }

        [HttpPost]//http://xxx/api/savedata
        public HttpResponseMessage SavaData(ORDER order)
        {
            return Request.CreateResponse();
        }

2、最简单的特性路由

        [Route("Order/SaveData")]
        [HttpPost]
        public HttpResponseMessage SavaData(ORDER order)
        {
            return Request.CreateResponse();
        }

        [Route("ordertype/{id}/order")]
        [HttpGet]
        public IHttpActionResult GetById(int id)
        {
            return Ok<string>("Success" + id );
        }

特性路由的目的是为了解决我们公共路由模板引擎解决不了的问题。一个action定义了特性路由之后,就能通过特性路由上面的路由规则找,特性路由的规则可以使用“{}”占位符动态传递参数,比如我们有这样一个特性路由

时间: 2024-11-07 18:12:10

WebAPI的路由规则的相关文章

ASP.NET Web API路由规则(二)

默认的规则 在ASP.NET MVC4中 global.asax.cs代码中并无注册默认路由规则的代码 代码如下: public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters

dubbo之路由规则

向注册中心写入路由规则:(通常由监控中心或治理中心的页面完成) RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension(); Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181")); re

MVC路由规则以及前后台获取Action、Controller、ID名方法

1.前后台获取Action.Controller.ID名方法 前台页面:ViewContext.RouteData.Values["Action"].ToString(); ViewContext.RouteData.Values["Controller"].ToString(); ViewContext.RouteData.Values["ID"].ToString(); 后台页面:RouteData.GetRequiredString(&qu

Python开发【Django】:路由规则

Django请求生命周期: -->url对应关系(匹配) ->视图函数->返回用户字符串 -->url对应关系(匹配)->视图函数->打开一个HTML文件,读取内容 创建django project django-admin startproject mysite cd mysite python manage.py startapp cmdb mysite mysite --配置文件 -url.py -settings.py cd mysite cmdb -views

【基础】MVC路由规则

一.RouteData解析过程 在ASP.NET MVC中,服务器收到来自客户端的请求后,会经过一些列的处理拿到请求的数据,比如在Pipeline 管线事件中,通过订阅适当的事件,将HttpContext作为参数传入HttpContextWrapper进行封装,然后取得当前路由集合的数据RouteData进行解析,拿到具体的参数,包括请求路径.请求的参数.IRouteHandler等,通过IRouteHandler的GetHttpHandler返回一个IHttpHandler对象,通过该对象对请

添加路由规则

听着李健的<传奇>,敲着dell的键盘,用着windows10的系统,我写下了这篇博客,关于express路由规则的添加. app.js: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser');

MVC路由规则调试。

<1> 首先去我的腾讯微云里下载RouteDebug.dll文件 将文件下载下来后. 回到vs 右键 项目解决方案-->在windows资源管理器中打开文件夹->找到packages文件夹.这个文件夹就是放所有的第三方库的.不管是js库还是dll库都是放在这个文件夹中. 所以现在我们将下载下来的RouteDebug.dll文件放到这个文件夹中. 回到VS, 在MvcApplication应用程序下 选择"引用",将刚刚RouteDebug.dll文件应用进来.

MVC的URL路由规则

Routing的作用:它首先是获取到View传过来的请求,并解析Url请求中Controller和Action以及数据,其次他将识别出来的数据传递给Controller的Action(Controller的方法).这是Routing组件的两个重要的作用! 下面我们从几个例子来讲解一下Url路由的使用. MapRoute()有6个方法可以重载,下面举5个例子相应介绍! 实例一:首先讲解的是系统默认提供的路由格式,下面是系统给的默认代码: public static void RegisterRou

MVC之路由规则 (自定义,约束,debug)

自定义路由规则的要求,小范围写在前,大范围写在后.路由规则可以注册多条,路由规则的名称不能重复路由规则有顺序,并且按照顺序进行匹配,建议小范围写在前,大范围写在后.路由规则可以设置约束 即正则表达式路由规则匹配的控制器可以设置命名空间约束 routes.MapRoute( name: "NewShow", url: "{year}-{month}-{day}-{id}", defaults: new { controller = "News",