WebApi及Fiddler工具
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狀態碼知識也沒有介紹到。代碼寫得也不夠嚴謹,比如索引訪問越界不存在等錯誤或異常處理。
我們學習知識,慢慢來吧!先到此為止!

