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負責構建實時服務。

  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

 

 

 

!

  • 作       者 : Yaopengfei(姚鵬飛)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 聲     明1 : 本人才疏學淺,用郭德綱的話說“我是一個小學生”,如有錯誤,歡迎討論,請勿謾罵^_^。
  • 聲     明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM