日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第一节:WebApi的纯原生态的RestFul风格接口和路由规则介绍

發布時間:2023/12/10 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第一节:WebApi的纯原生态的RestFul风格接口和路由规则介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 原生態接口

1. 從默認路由開始分析

 在WebApiConfig.cs類中的Register方法中,我們可以看到默認路由如下:

分析:請求地址在 controller 前面需要加上 api/,controller后面沒有action,最后有一個參數{id},webapi默認的路由規則就是一種RestFul風格的接口調用規則。

2. WebApi的默認調用規則

(1). 方法名默認為Get或者GetXXX開頭的只接受get請求,默認為Post或者PostXXX開頭的只接受Post請求,如果標注[HttpGet]、[HttpPost]等特性的話,則以特性為主。

(2). 不以GetXX或者PostXX等特殊開通的通過標注[HttpGet]等特性,也可以進行訪問, 比如下面的UserInfor方法,通過添加[HttpGet]特性,就可以進行Get訪問了。

?PS:其它特殊的調用接受規則,詳見下一節。

3. 實戰測試

?前提:以下所有的Action,都位于FirstController下,路由規則使用的是WebApi的默認路由規則。

(1).無參Get方法

?

請求方式:Get請求,請求地址:http://localhost:2131/api/First

(2).有參數的Get方法,參數名為int id

請求方式:Get請求,請求地址:http://localhost:2131/api/First/5? ?或者??http://localhost:2131/api/First/?id=5

分析:默認的路由規則:api/{controller}/{id},最后一個是 {id},而該方法的參數名也為id,所以可以?api/First/5? 拼接,如果這里路由規則為:api/{controller}/{id2},方法的參數名必須為 int id2,才可以 api/First/5? 這樣拼接。

(3). 有參數的Get方法,參數名為 int id2

?

分析:該方法和上述的Get(int id)不能共存,因為不滿足重載規范,該方法只能通過 api/First?id2=111 的模式進行Get請求,不能通過api/First/2的模式進行請求,因為路由中最后一位是 {id}而不是{id2}。

(4). 有string參數的Get方法

?

請求方式:Get請求,請求地址分別為:http://localhost:2131/api/First/?userName=5 、http://localhost:2131/api/First/?str=5

(5). 多個參數且不以Get開頭,標注[HttpGet]特性

?

?請求方式:Get請求,請求地址為:http://localhost:2131/api/First/?id=5&name=ypf

(6). 帶一個參數的Post請求

請求方式如下:

?

(7). 帶一個參數的Delete請求

?

請求方式:Delete? 請求地址:http://localhost:2131/api/First/?id=5 或者?http://localhost:2131/api/First/5

(8). 帶一個參數的Put請求?

?

存在問題:postman請求,服務器端拿不到value的值。?? 稍后解決

?

二. 路由規則

1. 簡介:

  WebApi有兩種路由規則,默認路由和特性路由,都位于WebApiConfig類中的Register方法里進行配置,

  (1). config.MapHttpAttributeRoutes(); 代表特性路由

  (2). config.Routes.MapHttpRoute();? 代表統一的默認路由

特別注意:特性路由的優先級 大于 默認路由的優先級

2. 默認路由

  WebApi的默認路由為:routeTemplate: "api/{controller}/{id}",不含action,且最后一個參數名為id,只有參數名為id的時候才可以通過api/xxx/1 這種方式進行訪問。

  ?默認路由可以同時聲明多個,只要里面的name值不一樣即可,滿足任何一個路由規則都可以訪問。

演示:增加兩個路由,名字分別為:DefaultApi2和DefaultApi3,下面的GetUseName方法,通過這兩個路由規則:?api2/Third/GetUserName?userName=1234 或者 api3/Third/GetUserName?userName=1234 都可以訪問

(PS:需要注釋掉相關的:[RoutePrefix]和[Route])

服務器端代碼:

?

3. 特性路由

(1). 可以通過[Route]和[RoutePrefix]這兩個標記來自定義路由規則,[Route]作用于action,[RoutePrefix]作用于Controller,?一旦設置了其中任何一個,默認路由routeTemplate就不起任何作用了。

(2). 當[RoutePrefix]和[Route]都存在的話,規則為二者的拼接結合,先[RoutePrefix] 后[Route]

案例測試

A:下面的GetM1(string userName)方法,增加特性: [Route("myApi/Third/GetM1")],注視掉控制器上的[RoutePrefix]特性,保留默認路由DefaultApi2和DefaultApi3,?則該方法需要通過:http://localhost:2131/myApi/Third/GetM1?userName=1234 進行訪問。

B:下面的GetM2(string userName)方法,增加特性: [Route("myApi/Third/GetM2")],控制器上增加[RoutePrefix("ypfApi/Third")],保留默認路由DefaultApi2和DefaultApi3,?則該方法需要通過:http://localhost:2131/ypfApi/Third/myApi/Second/GetM2?userName=1234 進行訪問。

C:下面的GetFullName(string firstName,string lastName)方法,增加特性: [Route("myApi/Third/GetFullName/{firstName}/{lastName}")],注視掉控制器上的[RoutePrefix]特性,?保留默認路由DefaultApi2和DefaultApi3。

則該方法可以通過:http://localhost:2131/myApi/Third/GetFullName/姚/大寶 進行訪問

1 //[RoutePrefix("ypfApi/Third")]2 public class ThirdController : ApiController3 {4 /// <summary>5 /// 演示多個默認路由的情況6 /// 需要把控制器的特性注釋掉!需要把WebApiConfig中的 DefaultApi2和DefaultApi3兩個路由打開,其他的都注釋掉7 /// </summary>8 /// <param name="userName"></param>9 /// <returns></returns> 10 [HttpGet] 11 public string GetUserName(string userName) 12 { 13 return $"userName的值為{userName}"; 14 } 15 16 /// <summary> 17 /// 演示淡出的[Route]特性 18 /// </summary> 19 /// <param name="userName"></param> 20 /// <returns></returns> 21 [Route("myApi/Third/GetM1")] 22 [HttpGet] 23 public string GetM1(string userName) 24 { 25 return $"GetM1您的返回值為:{userName}"; 26 } 27 28 /// <summary> 29 /// 演示[RoutePrefix]和[Route] 30 /// </summary> 31 /// <param name="userName"></param> 32 /// <returns></returns> 33 [Route("myApi/Third/GetM2")] 34 [HttpGet] 35 public string GetM2(string userName) 36 { 37 return $"GetM2您的返回值為:{userName}"; 38 } 39 40 /// <summary> 41 /// 演示自定義[Route]的特殊寫法 42 /// </summary> 43 /// <param name="firstName"></param> 44 /// <param name="lastName"></param> 45 /// <returns></returns> 46 [Route("myApi/Third/GetFullName/{firstName}/{lastName}")] 47 [HttpGet] 48 public string GetFullName(string firstName,string lastName) 49 { 50 return $"firstName值為{firstName},lastName值為{lastName}"; 51 } 52 53 }

5. 特性路由的作用

(1). 標記特殊的訪問路徑,該功能有點雞肋,用的比較少。

(2). 多版本控制的時候會使用. (后面介紹)

?

總結

以上是生活随笔為你收集整理的第一节:WebApi的纯原生态的RestFul风格接口和路由规则介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产又粗又硬又黄的视频 | 超碰狠狠操 | 台湾佬美性中文娱乐 | 国产成人在线视频播放 | 69xxx少妇按摩视频 | 在线不卡国产 | 男人的天堂亚洲 | 浪漫樱花动漫在线观看免费 | 麻豆爱爱 | 亚洲激情第一页 | 一区二区三区四区国产 | 久久免费精品视频 | 欧美人与禽猛交乱配 | 国产suv精品一区二区33 | 黄页网址大全免费观看 | 国产无遮挡18禁无码网站不卡 | 人体毛片 | 可以直接在线观看的av | 99久热在线精品996热是什么 | 国产欧美熟妇另类久久久 | 91成人福利 | 涩涩视频在线 | aaaa黄色| 亚洲精品久久久久久久久久 | 2018狠狠干| 成年人香蕉视频 | 91在线一区二区三区 | 黄片毛片 | www日本免费 | 91在线中文 | 亚洲一区网站 | 尤物视频免费在线观看 | 疯狂做爰高潮videossex | 一区二区三区四区五区av | 男人的天堂狠狠干 | 91蝌蚪91密月 | 波多野结衣在线观看一区二区三区 | 精品国产一区二区三区久久久蜜月 | 丁香婷婷网 | 欧美黄页在线观看 | 成人夜色视频 | 国产人妖在线视频 | 人妻丰满熟妇av无码区hd | 精品久久香蕉国产线看观看亚洲 | 波多野结衣中文字幕在线 | 青青久久av | 浪潮av一区二区三区 | 国产精品免费看 | 日韩精品中文字幕在线播放 | 秋霞在线观看视频 | 波多av在线 | 波多野结av衣东京热无码专区 | 亚洲精华液一区二区 | 国产精品嫩草影院桃色 | 亚洲午夜色 | 在线免费观看黄网 | 亚洲免费av网站 | 欧美日韩视频免费 | 精品一二三区久久aaa片 | 国产精品无码一区 | 亚洲最大成人网色 | 黄色av小说在线观看 | 天天做天天爱天天做 | 日韩在线一 | 少女情窦初开的第4集在线观看 | www久久久天天com | 天天操一操 | 色欲亚洲Av无码精品天堂 | a级片在线免费看 | 中文字幕在线视频免费观看 | 久久精品国产亚洲av麻豆色欲 | 久久久久久国产精品免费播放 | 色播综合网 | 国产精品天干天干 | 久久成人免费视频 | 九色av | ass精品国模裸体pics | 日韩综合一区二区 | 丁香婷婷久久久综合精品国产 | 国产区精品区 | 亚洲一区二区三区成人 | 国产又黄又猛视频 | 亚洲乱熟女一区二区 | 激情啪啪网站 | 日日爱夜夜爱 | 亚洲特级毛片 | 黑人超碰 | 成人区一区二区 | 国产亚洲色婷婷久久99精品91 | 国产第一毛片 | 日日摸日日添日日躁av | 先锋av资源站 | 欧美激情精品久久久久久变态 | 双性人bbww欧美双性 | 国产精品扒开腿做爽爽爽a片唱戏 | 黄色激情视频网站 | 亚洲精品日本 | 就要干就要操 | 亚洲精品国产99 |