一.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/