Asp.Net WebAPI的簡介及建立
一.WebAPI簡介
ASP.NET Web API 是一種框架,用於輕鬆構建可以由多種客戶端(包括瀏覽器和移動裝置)訪問的 HTTP 服務。ASP.NET Web API 是一種用於在 .NET Framework 上構建 RESTful 應用程式的理想平臺。
可以把WebApi看成Asp.Net專案型別中的一種,其他專案型別諸如我們熟知的WebForm專案,Windows窗體專案,控制檯應用程式等。
WebApi型別專案的最大優勢就是,開發者再也不用擔心客戶端和伺服器之間傳輸的資料的序列化和反序列化問題,因為WebApi是強型別的,可以自動進行序列化和反序列化,一會兒專案中會見到。
二.為什麼要用 Web API
Web API最重要的是可以構建面向各種客戶端的服務。另外與WCF REST Service不同在於,Web API利用Http協議的各個方面來表達服務(例如 URI/request response header/caching/versioning/content format),因此就省掉很多配置。
當你遇到以下這些情況的時候,就可以考慮使用Web API了。
- 需要Web Service但是不需要SOAP
- 需要在已有的WCF服務基礎上建立non-soap-based http服務
- 只想釋出一些簡單的Http服務,不想使用相對複雜的WCF配置
- 釋出的服務可能會被頻寬受限的裝置訪問
- 希望使用開源框架,關鍵時候可以自己除錯或者自定義一下框架
三.Web API的主要功能
1. 支援基於Http verb (GET, POST, PUT, DELETE)的CRUD (create, retrieve, update, delete)操作
通過不同的http動作表達不同的含義,這樣就不需要暴露多個API來支援這些基本操作。
2. 請求的回覆通過Http Status Code表達不同含義,並且客戶端可以通過Accept header來與伺服器協商格式,例如你希望伺服器返回JSON格式還是XML格式。
3. 請求的回覆格式支援 JSON,XML,並且可以擴充套件新增其他格式。
4. 原生支援OData。
5. 支援Self-host或者IIS host。
6. 支援大多數MVC功能,例如Routing/Controller/Action Result/Filter/Model Builder/IOC Container/Dependency Injection。
四.Web API和WebService和WCF的區別
Web Service
1、它是基於SOAP協議的,資料格式是XML。
2、只支援HTTP協議。
3、它不是開源的,但可以被任意一個瞭解XML的人使用。
4、它只能部署在IIS上。
WCF
1、這個也是基於SOAP的,資料格式是XML。
2、這個是Web Service(ASMX)的進化版,可以支援各種各樣的協議,像TCP,HTTP,HTTPS,Named Pipes, MSMQ.。
3、WCF的主要問題是,它配置起來特別的繁瑣。
4、它不是開源的,但可以被任意一個瞭解XML的人使用。
5、它可以部署應用程式中或者IIS上或者Windows服務中。
WCF Rest
1、想使用WCF Rest service,你必須在WCF中使用webHttpBindings。
2、它分別用[WebGet]和[WebInvoke]屬性,實現了HTTP的GET和POST動詞。
3、要想使用其他的HTTP動詞,你需要在IIS中做一些配置,使.svc檔案可以接受這些動詞的請求。
4、使用WebGet通過引數傳輸資料,也需要配置。而且必須指定UriTemplate。
5、它支援XML、JSON以及ATOM這些資料格式。
Web API
1、這是一個簡單的構建HTTP服務的新框架。
2、在.net平臺上Web API 是一個開源的、理想的、構建REST-ful 服務的技術。
3、不像WCF REST Service.它可以使用HTTP的全部特點(比如URIs、request/response頭,快取,版本控制,多種內容格式)。
4、它也支援MVC的特徵,像路由、控制器、action、filter、模型繫結、控制反轉(IOC)或依賴注入(DI),單元測試。這些可以使程式更簡單、更健壯。
5、它可以部署在應用程式和IIS上。
6、這是一個輕量級的框架,並且對限制頻寬的裝置,比如智慧手機等支援的很好。
7、Response可以被Web API的MediaTypeFormatter轉換成Json、XML 或者任何你想轉換的格式。
五.建立一個Asp.Net WebAPI專案
1.新建一個Asp.net空應用程式
2.選擇WebAPI
3.這裡我們新增一個名為PersonController的Web Api2控制器
3.在控制器中寫3個簡單的方法
1 public class PersonController : ApiController 2 { 3 //不帶引數的方法 4 public string[] Get() 5 { 6 return new string[] { "shuke", "beta", "tom" }; 7 } 8 //根據學生ID查詢學生姓名 9 public string Get(int id) 10 { 11 if (id == 1) 12 { 13 return "shuke"; 14 } 15 else 16 { 17 return "beta"; 18 } 19 } 20 //返回學生姓名的長度 21 public int Get(string name) 22 { 23 return name.Length; 24 } 25 }
4.到這裡一個簡單的Web API專案就建立完成了,點選執行
直接執行,不會直接跳轉到到我們寫的api裡面,這裡我們要將地址後面加上檔案地址加上這裡指定的字尾(也可以改為別的),這裡我的是api/Person/
在瀏覽器地址加入字尾,當id=1是,可以看到這裡結果為shuke,那麼到這裡就成功查詢出來了。
5.除錯工具推薦:到這裡基本一個webapi專案就完成了,剩下了就是顯示了。首先得先執行專案,然後再瀏覽器位址列找到網址,然後複製到postman中,然後再呼叫相關的函式。我們在做大型專案是在瀏覽器除錯會有諸多不便,這裡推薦一個常用的介面除錯工具Postman
PostMan地址 :https://www.getpostman.com/