webapi的一些使用

近期在项目中使用到了webapi,遇到了一些可以学习改进的地方,其中涉及了一些知识,自己整理一下,方便记忆。

一.webapi的路由机制

  1.配置文件一般放在UI层下的app—start文件夹下,名为WebApiConfig.cs文件,我们在这里配置默认路由。

   配置文件的含义:

     1.name:"DefaultApi"表示此路由的名称。注册多个路由时必须保证名称不重复。

 

     2.routeTemplate:"api/{controller}/{id}"表示路由的匹配规则。api是固定必填值,这个值是可变的如果你把它改成“BalaApi”,那url就应该变成 “http://1.1.1.1:80/BalaApi/***”。

      {controller}是控制器的占位符,在真实的url中,该部分对应的是具体的控制器名称。

      这个和MVC一致的。{id}是形参id的占位符,id是形参的名字,一般这个参数都会在defaults中设置为可选。


     3.defaults:new { id=RouteParameter.Optional }表示设置id为可选参数,routeTemplate中的{controller}和{id}都可以设置默认值。

        这意味着,没有输入id参数时,也能访问到默认的无参Get方法,不写这行的话就访问不到。

      若defaults改成new { controller="Pleasure", id = RouteParameter.Optional },那么我们请求http://1.1.1.1:80/api这个url仍然能访问到Pleasure控制器中的[HttpGet]方法。


     4.constraints:new{ id = @"\d+" }表示为id添加约束。形参id不能为空而且必须是整数,优先匹配含参方法,也能匹配无参方法。

  2.默认路由的匹配机制(webapi的路由机制的补充):

    1.webapi默认路由机制的思想是:解析http请求的类型 {Post(增)、Delete(删)、Put(改)、Get(查)},匹配Action,也就是说,不必指定Action的名称。例如:/api/tip-rule,默认这个url就表示匹配tip-rule控制器下的[HttpGet]方法

    2.同一个前缀RoutePrefix(“ ”)下。例如RoutePrefix(“api/tip-rule ”)如果http请求的类型不一样,那么拿到的方法也不一样。(默认Get)

      这意味着,同样的{controller}控制器名,不同的请求方式,调用的是不同的Action方法。

    3.路由解析规则由cs文件下的routeTemplate:"api/{controller}/{id}"定义,api是固定必填值,{controller}是必填的控制器名,{id}表示匹配的id形参,而且是可选参数(方法的参数列表中可以有名为id的形参,也可以没有)

      这意味着,同样的{controller}控制器名,不同的入参,用的是不同的Action方法。

      有带参的方法找不到时,也可以使用无参的方法,所以会进到无参的Action方法里。

    4.webapi是支持指定的action,多了一层,思路相同。但是restful的风格下,不是很提倡。

 

  3.不同http请求的参数形式问题

    1.Get请求,入参一般是int,string等类型的入参

    2.Post请求,入参一般是一个Model

posted @   曲处通幽静  阅读(260)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示