什么是ASP.NET Web API?
官方的解釋是
ASP.NET Web API is a framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices. ASP.NET Web API is an ideal platform for building RESTful applications on the .NET Framework.
意思是,ASP.NET Web API是一個框架,可以輕松構建HTTP服務,覆蓋廣泛的客戶端,包括瀏覽器和移動設備。 ASP.NET Web API是在.NET Framework上構建RESTful應用程序的理想平台。
那么RESTful又是什么?
簡單的解釋,RESTful屬於一種設計風格,REST中的GET,POST,PUT DELETE來進行數據的增刪改查,如果開發人員的應用程序符合RESTful原則,則它的服務稱為"RESTful風格應用服務"。
創建一個ASP.NET Web API應用程序
下面我們就創建一個ASP.NET Web API應用程序,來演示一下ASP.NET Web API的基本用法。
這里我們為了方便快捷,我們直接在Visual Studio建立ASP.NET Web Application向導的下一個窗口中選擇Web API。
當然如果你創建的是一個空的ASP.NET Web Application,那么就需要安裝引用Microsoft ASP.NET Web API。
點擊OK按鈕,Visual Studio就為我們創建了使用Web API所需的基本文件以及應用程序所需的基本結構,在"Controllers"文件夾中有個名為ValuesController的Controller,這個Controller就是自動創建的一個默認Web API Controller。
我們打開ValuesController可以看到里面包含了基本的GET,POST,PUT和DELETE的HTTP請求方法。
1 public class ValuesController : ApiController 2 { 3 // GET api/values 4 public IEnumerable<string> Get() 5 { 6 return new string[] { "value1", "value2" }; 7 } 8 9 // GET api/values/5 10 public string Get(int id) 11 { 12 return "value"; 13 } 14 15 // POST api/values 16 public void Post([FromBody]string value) 17 { 18 } 19 20 // PUT api/values/5 21 public void Put(int id, [FromBody]string value) 22 { 23 } 24 25 // DELETE api/values/5 26 public void Delete(int id) 27 { 28 } 29 }
我們注意到上面代碼中Post和Put方法參數中有一個關鍵字[FromBody],而Get和Delete方法則沒有。事實上沒有加[FromBdoy]就默認為[FromUri]。它們代表什么意思呢,[FromBody]表示由請求文件本體中取得數據,就像一般表單Post Sumbit一樣。而[FromUri]則表示由URI中取得數據,就像網址中所帶的參數一樣。另外我們看到上面代碼中綠色注釋的部分就是不同請求的訪問URI。
這里我們稍作修改,添加一些模擬數據以便更好的演示這四種不同方式的請求。
1 public class ValuesController : ApiController 2 { 3 // Set mock data 4 List<string> mockDataList = new List<string>() 5 { 6 "Product A","Product B","Product C","Product D","Product E" 7 }; 8 9 // GET api/values 10 public IEnumerable<string> Get() 11 { 12 return mockDataList; 13 } 14 15 // GET api/values/5 16 public string Get(int id) 17 { 18 return mockDataList[id]; 19 } 20 21 // POST api/values 22 public void Post([FromBody]string value) 23 { 24 mockDataList.Add(value); 25 } 26 27 // PUT api/values/5 28 public void Put(int id, [FromBody]string value) 29 { 30 mockDataList[id] = value; 31 } 32 33 // DELETE api/values/5 34 public void Delete(int id) 35 { 36 mockDataList.RemoveAt(id); 37 } 38 }
好了,運行程序,這里我們借助Fiddler,一個web調試代理工具。
1.Get方法獲取所有數據
選擇請求方式GET,輸入請求地址后點擊Execute按鈕
如圖所示,請求成功並返回了所有數據。
2.Get方法獲取單個數據
選擇請求方式GET,輸入請求地址后點擊Execute按鈕
我們看到成功獲取到了索引值為1的數據。
3.Post方法添加一條數據
由於是Post請求,所以我們需要在請求Header中加上Accept:application/xml 和Content-Type:application/json聲明,並在請求的Body中加上你要添加的數值,這里我們添加一條數據"Product F"。
點擊Execute按鈕執行后,接着按照Get獲取所有數據的方式執行。看看是否成功新增數據。
我們看到新增的數據"Product F"在所有數據列表中了。
4.Put修改一條數據
Put請求,同樣我們需要在請求Header中加上Accept:application/xml 和Content-Type:application/json聲明,並在請求的Body中加上你要修改的數值,這里我們修改列表下標索引值為0的數據為"Product AA"。
點擊Execute按鈕執行后,接着按照Get獲取所有數據的方式執行。看看是否成功修改數據。
我們看到所要修改的數據成功修改為"Product AA"。
5.Delete刪除一條數據
這里我們刪除下標索引值為0的數據。
點擊Execute按鈕執行后,接着按照Get獲取所有數據的方式執行。看看是否成功刪除數據。
我們看到成功刪除了下標索引值為0的數據。
好了,本篇就先到此,希望對你有所幫助,謝謝!