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

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/1608.html
標籤:ASP.NET
上一篇:vue、element、axios、api 實作下載 excel 檔案
下一篇:.NET異步和多執行緒系列(四)- 多執行緒例外處理、執行緒取消、多執行緒的臨時變數問題、執行緒安全和鎖lock
