標籤:
一、理解WEB API:提供基於RESTful架構的WEB服務,通過HTTP要求方法(GET, PUT, POST, DELETE)映射到伺服器端相應的ACTION方法(CRUD)。
RESTful架構:
(1)每一個URI代表一種資源;
(2)用戶端和伺服器之間,傳遞這種資源的某種表現層;
(3)用戶端通過四個HTTP動詞,對伺服器端資源進行操作,實現"表現層狀態轉化"。
HTTP 的四個主要方法 (GET, PUT, POST, DELETE) 按照下列方式映射為 CURD 操作:
GET 用於擷取 URI 資源的進行展示, GET 操作不應對服務端有任何影響;
PUT 用於更新 URI 上的一個資源, 如果服務端允許, PUT 也可以用於建立一個資源;
POST 用於建立 資源, 服務端在指定的 URI 上建立一個新的對象, 將新資源的地址作為響應訊息的一部分返回;
DELETE 用於刪除指定的 URI 資源。
二、WEB API特點:
1.CONTROL類繼承自ApiController抽象類別;
2.註冊路由時一般無需指定ACTION節點,ACTION方法名稱一般都包含HTTP要求方法名名稱,路由系統通過HTTP要求方法自動尋找與之相應的ACTION方法並執行;
3.ACTION方法傳回值一般為:JSON、XML或一般值對象
三、實現發送GET, PUT, POST, DELETE HTTP要求方法
1.通過JQUERY.AJAX方法指定TYPE類型來實現GET, PUT, POST, DELETE HTTP要求方法;
2.直接存取URL或將表單的METHOD方法設為GET,則可實現GET HTTP要求方法;
3.將表單的METHOD方法設為POST,則可實現POST HTTP要求方法;
4.PUT、DELETE除第一種方法外,只能通過先在服務端重寫HTTP要求方法(自訂HttpMessageHandler來實現),然後再在用戶端請求報文頭指定“X-HTTP-Method-Override
”值為PUT或DELETE來實現;具體實現方法詳見:如果調用ASP.NET Web API不能發送PUT/DELETE請求怎麼辦?
5.在註冊WEB API路由規則時指定ACTION節點;
四、WEB API請求與服務端處理實現方法:
1.GET ALL方法:
用戶端:
$("#Button1").click(function () { $.getJSON("@Url.Content("~/api/values")", function (data) { var rs = ""; $.each(data, function () { rs += this + ","; }) alert(data); showResult(rs); }) });
伺服器端:
// GET api/values public IEnumerable<string> Get() { return new string[] { "value1", "value2" }; }
2.GET ONE方法:
用戶端:
$("#Button2").click(function () { $.getJSON("@Url.Content("~/api/values/5")", function (data) { alert(data); showResult(data); }) });
伺服器端:
// GET api/values/5 public string Get(int id) { return "value is " + id.ToString(); }
3.POST CREATE方法:(注意以下用戶端中的第幾種方法就對應伺服器端的第幾種方法)
用戶端:
//第一種:$("#Button1").click(function () { $.post("@Url.Content("~/api/values")", {name:‘zwj‘,age:29},function (data) { alert(data); showResult(data); }) });//第二種: $("#Button3").click(function () { $.ajax("@Url.Content("~/api/values/1")", { type:‘post‘, data:JSON.stringify({ name: ‘zwj‘, age: 29 }), contentType: ‘application/json‘, //dataType: ‘json‘, success: function (result, status, xhr) { alert(result); showResult(result); } }) });
伺服器端:
//第一種方法: public string Post() { string s = ""; HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//擷取傳統context HttpRequestBase request = context.Request;//定義傳統request對象 for (int i = 0; i < request.Form.Keys.Count; i++) { s += string.Format("{0}={1}<br/>", request.Form.Keys[i], request.Form[i]); } return "Post values:" + s; }//第二種方法: public string Post([FromBody]Person p) { return string.Format("Put values:name:{0},age:{1}" + p.Name,p.Age); }
4.PUT UPDATE方法:
用戶端方法與POST方法相同,只是TYPE指定為:PUT;
伺服器端與POST方法相同;
5.DELETE 方法:
用戶端方法與GET方法相同,只是TYPE指定為:DELETE;
伺服器端與GET方法相同;
也參見這篇文章:ASP.NET MVC學習系列(二)-WebAPI請求
ASP.NET MVC WEB API必知必會知識點總結