十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章主要介紹了ASP.NET Web API怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
REST(Representational State Transfer表述性狀態(tài)轉(zhuǎn)移)而產(chǎn)生的REST API的討論越來越多,微軟在ASP.NET中也添加了Web API的功能。
我們剛好看看Web API的使用,且看目前的版本有沒有解決掉這個問題。
項目建立在安裝了Visual Studio 2012后,我們依次點擊新建項目->已安裝模板->Web->ASP.NET MVC 4 Web Application新建一個工程項目。
項目模板選擇Web API。
在Model里面我們還是添加之前文章里面使用的User類。
1 namespace WebAPI.Models
2 {
3 public class Users
4 {
5 public int UserID { get; set; }
6
7 public string UserName { get; set; }
8
9 public string UserEmail { get; set; }
10 }
11 }
將自動生成的ValueController修改成UsersController。
GET數(shù)據(jù)使用HTTP的get方法請求獲取數(shù)據(jù),整個Web API的請求處理基于MVC框架。
代碼如下。
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Net;
5 using System.Net.Http;
6 using System.Web.Http;
7 using WebAPI.Models;
8
9 namespace WebAPI.Controllers
10 {
11 public class UsersController : ApiController
12 {
13 ///
14 /// User Data List
15 ///
16 private readonly List
17 {
18 new Users {UserID = 1, UserName = "Superman", UserEmail = "Superman@cnblogs.com"},
19 new Users {UserID = 2, UserName = "Spiderman", UserEmail = "Spiderman@cnblogs.com"},
20 new Users {UserID = 3, UserName = "Batman", UserEmail = "Batman@cnblogs.com"}
21 };
22
23 // GET api/Users
24 public IEnumerable
25 {
26 return _userList;
27 }
28
29 // GET api/Users/5
30 public Users GetUserByID(int id)
31 {
32 var user = _userList.FirstOrDefault(users => users.UserID == id);
33 if (user == null)
34 {
35 throw new HttpResponseException(HttpStatusCode.NotFound);
36 }
37 return user;
38 }
39
40 //GET api/Users/?username=xx
41 public IEnumerable
42 {
43 return _userList.Where(p => string.Equals(p.UserName, userName, StringComparison.OrdinalIgnoreCase));
44 }
45 }
46 }
構(gòu)造了一個user list,實現(xiàn)了三個方法,我們下面來做請求。
使用不同的瀏覽器請求的過程中會發(fā)現(xiàn)返回的格式不一樣。
先使用Chrome請求,我們發(fā)現(xiàn)HTTP Header里面的Content-Type是xml類型。
我們再換FireFox請求,發(fā)現(xiàn)Content-Type還是xml類型。
我們再使用IE請求,發(fā)現(xiàn)是這樣。
打開保存后的文件,我們發(fā)現(xiàn)請求到的數(shù)據(jù)是JSON格式。
造成這樣的差異的原因是:不同的瀏覽器發(fā)送的Request Header里面的Content-Type不一致造成的。
我們可以使用Fiddler驗證一下。
Content-Type:text/json
Content-Type:text/xml
實現(xiàn)一個User添加的功能,接受的類型為User實體,而我們POST的數(shù)據(jù)為對應的JSON數(shù)據(jù),看看dudu在Beta版本的遇到的問題有沒有解決。
1 //POST api/Users/Users Entity Json
2 public Users Add([FromBody]Users users)
3 {
4 if (users == null)
5 {
6 throw new HttpRequestException();
7 }
8 _userList.Add(users);
9 return users;
10 }
我們還是使用Fiddler進行模擬POST數(shù)據(jù)。
在POST請求前,我們先將代碼附加到進程里面,并在Add方法處設(shè)置斷點。
在Visual Studio 2012中,debug HOST的程序變成了IIS Express。
我們使用Ctrl+ALT+P,附加到它的進程里面。
下面使用Fiddler進行模擬POST。
注意在Request Header里面的Content-Type為text/json,POST的json內(nèi)容為:
1 {"UserID":4,"UserName":"Parry","UserEmail":Parry@cnblogs.com}
點擊Execute后,跳到了我們前面設(shè)置的斷點處,我們看看提交過來的數(shù)據(jù)。
這樣dudu在Beta里面遇到的問題已解。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“ASP.NET Web API怎么用”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!