[MVC4] 建立第一支Web Api
作者 : JB
作者 : JB
1. 請先下載安裝ASP.NET MVC4
http://www.microsoft.com/zh-tw/download/details.aspx?id=30683
(此連結的下載是For Visual Studio 2010)
http://www.microsoft.com/zh-tw/download/details.aspx?id=30683
(此連結的下載是For Visual Studio 2010)
2. 以下以Visaul Studio 2010為範例。
開新專案:
【Web】→【ASP.NET MVC 4 Web Application】
會跳出以下這個畫面,選擇Web API,然後可選擇要不要建立單元測試專案。
開新專案:
【Web】→【ASP.NET MVC 4 Web Application】
會跳出以下這個畫面,選擇Web API,然後可選擇要不要建立單元測試專案。
3. 建立好之後,可看到方案總管,的確跟一般MVC專案一樣有Model, View, Control。 不過因為基本上不會動到View J
4. 打開Control資料夾下面的「ValuesController.cs」
可看到裡面定義了四個Restful Service的方法
可看到裡面定義了四個Restful Service的方法
// GET api/values public IEnumerable< string > Get() { return new string[] { "value1", "value2" }; } // GET api/values/5 public string Get(int id) { return "value"; } // POST api/values public void Post([FromBody]string value) { } // PUT api/values/5 public void Put(int id, [FromBody]string value) { } // DELETE api/values/5 public void Delete(int id) { }
5. 接著我們來看定義routes的地方,開啟App_Start資料夾下面的WebApiConfig.cs
會看到以下的程式碼
會看到以下的程式碼
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute( name: "DefaultApi",
config.Routes.MapHttpRoute( name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
很清楚的可以看到routes定義為 api/{controller}/{id}{controller} : 你的Control名稱{id} : 帶入的值(參數),而id = RouteParameter.Optional 則定義此欄位為非必要。
7. 測試GET方法 …
在網址後面加上 http://localhost:XXXX/api/values
瀏覽器應該會問你要不要下載檔案,這個就是Web API回傳回來的JSON資料,打開這個檔案會看到
["value1","value2"]
下圖是用Fiddler看的結果
備註:如果我們要讓使用者在GET方法時,動態選擇取得的response格式為XML或JSON,做法如下:
打開Global.asax.cs,在Application_Start方法中加入下列紅色的程式碼。
PS.必須參考 using System.Net.Http.Formatting
在網址後面加上 http://localhost:XXXX/api/values
瀏覽器應該會問你要不要下載檔案,這個就是Web API回傳回來的JSON資料,打開這個檔案會看到
["value1","value2"]
下圖是用Fiddler看的結果
備註:如果我們要讓使用者在GET方法時,動態選擇取得的response格式為XML或JSON,做法如下:
打開Global.asax.cs,在Application_Start方法中加入下列紅色的程式碼。
PS.必須參考 using System.Net.Http.Formatting
//設定一個URL的新參數
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("json", "true", "application/json"));
//設定一個URL的新參數
GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(new QueryStringMapping("xml", "true", "text/xml"));
這兩行表示我們可以在URL中加入json和xml兩個參數,來設定是否開啟json/xml回傳格式。
所以預設回傳json格式的URL可以改打
http://localhost:63435/api/values?id=10&json=true
如果要拿到xml格式,就改打以下網址…
http://localhost:63435/api/values?id=10&xml=true
這兩行表示我們可以在URL中加入json和xml兩個參數,來設定是否開啟json/xml回傳格式。
所以預設回傳json格式的URL可以改打
http://localhost:63435/api/values?id=10&json=true
如果要拿到xml格式,就改打以下網址…
http://localhost:63435/api/values?id=10&xml=true
8. 測試POST方法 …
新增一個類別 CItem,裡面放兩個String變數value1、value2
然後修改 POST函式:
// POST api/values
新增一個類別 CItem,裡面放兩個String變數value1、value2
然後修改 POST函式:
// POST api/values
public CItem Post()
{
CItem myItem = new CItem();
myItem.value1 = "HI";
myItem.value2 = "HELLO";
return myItem;
如果要建立Web Api Help Page可以參考
回覆刪除http://www.asp.net/web-api/overview/creating-web-apis/creating-api-help-pages