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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WebApi系列(从.Net 到 .Net Core)【更新】

發布時間:2023/12/10 asp.net 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WebApi系列(从.Net 到 .Net Core)【更新】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 簡介

?1. 什么是WebApi?

  WebApi是一個很廣泛的概念,在這里我們特指.Net平臺下的Asp.Net WebApi框架,它是針對各種客戶端(瀏覽器、APP等)來構建Http服務的一個框架,它是一種RestFul風格的開發接口的技術,它比WebService更省流量,比WCF更簡單。下圖表示WebApi在.Net平臺下的地位。

?

  簡單分析:WebForms、MVC均為ASP.NET下的Web開發框架,WebAPI負責構建HTTP常規服務,SignalR負責構建實時服務。(個人觀點:Web Page就是能在瀏覽器上顯示的文檔(一般是指html文檔,當然一些如word,pdf等也可算Web Page)的總稱;Web Form是一種特殊的,能用控件進行快速開發的Web Page

  WebAPI和MVC簡單對比一下:WebAPI是專注于接口開發,更專業,用戶不會直接和WebApi打交道,因此WebApi也不會生成界面,當然我們完全可以使用MVC來開發接口,甚至一般處理程序(HttpHandler)

2. WebApi的功能特點

(1). 支持RestFul風格的的請求,即可以通過 Get、Post、Put、Delete請求CRUD操作,不需要暴露更多的API。

(2). 方法的返回值可以直接返回對象,專注于數據。

(3).?獨立于IIS部署(selfhost、winform、控制臺)。

(4). 方法可以直接聲明為async。

(5). 支持MVC大部分功能,但和MVC在路由、Filter、ModelBinder等方面都有一些區別.(這里指.Net FrameWork)。

3. WebApi和MVC的區別

(1). MVC主要用來構建網站,所以既關心數據又關心頁面,而WebApi主要用來構建接口,所以只關心數據。

(2). WebApi支持Self Host,即獨立于IIS部署,MVC不支持。(.Net Core 下的MVC是支持的)

(3). WebApi通過請求方式來區分請求哪個接口,MVC則需要通過Action的名字來確定。

(4). WebApi位于System.Web.Http命名空間下,而MVC位于System.Web.Mvc命名空間下,所以二者在路由、Filter、ModelBinder等方面都有一些區別。

(5). WebApi更輕量更適合構建App的接口服務。

(6).?Web API支持格式協商,客戶端可以通過Accept header通知服務器期望的格式。

4. WebApi和WCF的取舍

(1). 如果服務需要支持One Way Messaging/Message Queue/Duplex Communication,選擇WCF

(2).?如果服務需要在TCP/Named Pipes/UDP (wcf 4.5),選擇WCF

(3).?如果服務需要在http協議上,并且希望利用http協議的各種功能,選擇Web API

(4).?如果服務需要被各種客戶端(特別是移動客戶端)調用,選擇Web API

??

二. Restful

?1. 什么是RestFul風格的接口?

(1).調用者不再根據方法名稱區分請求方法,而是通過請求方式進行區分,將所有的操作都抽象成對資源的增刪改查。

 即:新增用Post請求,查詢用get請求,修改用put請求,刪除用delete請求。

(2).請求的路徑中將不在出現方法名稱

(3).用Http的返回狀態碼表示服務器端的處理結果,eg:找不到用404、沒有權限返回201,不在需要自己約定狀態碼。

(4).有利于系統優化,瀏覽器可以自動緩存Get請求。

2. RestFul風格的弊端

  理論性太強,很容易把初學者搞暈,比如 如何通過狀態碼區分是"賬號錯誤"還是"密碼錯誤"? 比如"登錄"屬于什么操作?再比如 一個控制器里有兩個方法 GetM1() 和 GetM2(), 兩個方法中都沒有參數值,這種情況如何通過請求方式來區分呢?再比如 下面的GetStudets(string str) 和 GetTeachers(string str) 方法,參數名都是str,所以無法區分(可以把其中一個參數名改為str2,就不沖突了,或者通過別的路由規則聲明一下,或者給標注個非Get請求的標記,比如[HttpPost]總之很麻煩)

??

三. 系列章節

?  

? ? ? ?第一節:WebApi的純原生態的RestFul風格接口和路由規則介紹

? ? ? ?第二節:如何正確使用WebApi和使用過程中的一些坑

? ? ? ?第三節:總結.Net下后端的幾種請求方式(WebRequest、WebClient、HttpClient)

? ? ? ?第四節:跨域請求的解決方案和WebApi特有的處理方式

? ? ? ?第五節:WebApi的三大過濾器

? ? ? ?第六節:WebApi的部署方式(自托管)

? ? ? ?第七節:WebApi與Unity整合進行依賴注入和AOP的實現

? ? ? ?第八節:常見安全隱患和傳統的基于Session和Token的安全校驗

? ? ? ?第九節:JWT簡介和以JS+WebApi為例基于JWT的安全校驗

? ? ? ?第十節:進一步擴展兩種安全校驗方式

? ? ? ?第十一節:WebApi的版本管理的幾種方式

? ? ? ?第十二節:WebApi自動生成在線Api文檔的兩種方式

? ? ? ?第十三節:Asp.Net Core WebApi基礎總結和請求處理

? ? ? ?第十四節:Asp.Net Core WebApi生成在線文檔

? ? ? ?第十五節:Asp.Net Core WebApi路由規則

? ? ? ?第十六節:XXXX

?

總結

以上是生活随笔為你收集整理的WebApi系列(从.Net 到 .Net Core)【更新】的全部內容,希望文章能夠幫你解決所遇到的問題。

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