標籤:
1.概述
曾經有人問:asp.net mvc和asp.net webapi區別在哪?這個其實不好回答的。可能因為mvc模式盛行的原因,webapi顯得孤芳自賞了,讓人覺得它是雞肋。其實webapi應該比mvc更符合web應用與開發本質,功能也不弱於mvc。
mvc4和5出現時,才有webapi出現,至於它為何出現?我們沒有必要研究這些,能玩好它就行了。這時的webapi和mvc的最大區別是路由管道不一致,各實現自己的一套。到了mvc6時代,微軟也意識到,代碼基本差不多,何不重用?所以,現在mvc6已經統一了mvc和webapi路由。
說到這,可能還是覺得mvc和webapi機制和實現起來,看起來長得很象呀。是的,沒錯。其實webapi最核心的是使用REST風格。關於何謂REST?建議你另行瞭解。這裡大概說一下,webapi中的Action方法名是使用HTTP方法名或其首碼,當然也可以不按照這些,在方法上標註HTTP方法名特性也行的。這麼說,有些繞了,抱歉!
2.建立項目
為了示範說明,還是建立一個ASP.NET 5項目模板的 GiveCase.WebApies:
註:已經有了Values控制器樣本了。
3.Fiddler
這個工具對類比HTTP請求調試很有協助的,建議會使用。官方網址http://www.telerik.com/fiddler
4.控制器
開啟Controllers\ValuesController.cs並修改為:
using System.Collections.Generic;using Microsoft.AspNet.Mvc;namespace GiveCase.WebApies.Controllers{ [Route("api/[controller]")] public class ValuesController : Controller { //類比資料 static List<string> data = InitList(); private static List<string> InitList() { var list = new List<string> { "value1", "value2", "value3" }; return list; } // GET: api/values [HttpGet] public IEnumerable<string> Get() { return data; } // GET api/values/5 [HttpGet("{id}")] public string Get(int id) { return data[id]; } // POST api/values [HttpPost] public void Post([FromBody]string value) { data.Add(value); } // PUT api/values/5 [HttpPut("{id}")] public void Put(int id, [FromBody]string value) { data[id] = value; } // DELETE api/values/5 [HttpDelete("{id}")] public void Delete(int id) { data.RemoveAt(id); } }}
4.測試示範
運行網站,使用fiddler工具。
1.get方法查詢所有
Execute執行結果:
2.get方法查詢單個
註:索引是從0開始的,所以查詢id為1的結果是集合的第二個元素。
3.post方法添加一個
在要求標頭加上:
Accept:application/xml
Content-Type:application/json
執行成功後(注意狀態代碼是204,其實應該是201,後續文章再糾正):
再用前面說的get方法查詢所有:
ok!添加成功!
4.put方法修改一個
我們示範把value1改為value5
執行後,再用get方法查詢所有:
OK,也修改成功!
5.delete方法刪除一個
我們示範把第4個value4刪除
執行後,再用get方法查詢所有:
ok,值為value4沒了!
5.小結
本章內容也不多,只是操作字串集合,也沒有把它輸出到html頁面上,更沒有示範使用實體集合(這是實際應用必須的)。關於http狀態代碼知識也沒有介紹到。代碼寫得也不夠嚴謹,比如索引訪問越界不存在等錯誤或異常處理。
我們學習知識,慢慢來吧!先到此為止!
第04章 ASP.NET 5 :WebApi及Fiddler工具