当前位置:首页 > Windows程序 > 正文

如果没有配置action

2024-03-31 Windows程序

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界说了特性路由之后,就能通过特性路由上面的路由法则找,特性路由的法则可以使用“{}”占位符动态通报参数,好比我们有这样一个特性路由

WebAPI的路由法则

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/36255.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494592访问次数
  • 建站天数
  • 友情链接