華文網

我的第一個webapiDemo

最近在面試,總是被問到有沒有接觸過webapi 或者問webapi和MVC 的區別,今天看了看,原來如此,自己理解感覺webapi和webservice一樣像是實現soa 的一種形式,也可以理解為服務或者是一種資料請求框架。

下面簡單的寫一下我第一個webapi 實例過程。

軟體環境:vs2012

1、創建ASP.NET MVC4 Web 項目->點擊ok->在“新ASP.NET MVC 4項目”對話方塊中,選擇“Web API”並點擊“OK”.

2、Add a model. 名為Product.cs. 賦幾個屬性,代碼為

namespace HelloWebAPI.Models { public class Product { public int Id { get; set; } public string Name { get; set; } public string Category { get; set; } public decimal Price { get; set; } } }

3、Add a controller.名為ProductsController.(創建控制器時,範本選擇空API控制器),然後實現方法,如下namespace HelloWebAPI.Controllers

{ using HelloWebAPI.Models; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; public class ProductsController : ApiController {

4、現在我們就有了一個可以工作的webapi ,控制器上每一個方法都映射到一個Url上,

如下:

IE:

Firefox:

6、現在試著流覽下面兩個URL:

http://localhost:xxxx/api/products/1http://localhost:xxxx/api/products?category=hardware

第一個應當返回ID等於1的詞條。第二個應當返回Category等於“hardware”的所有產品的清單(這裡,只有一個詞條)。

7、現在以一個前臺頁面調用API為例,找到View下面的Home->Index.cshtml文件,寫入如下代碼:

All Products ID:

8、直接運行,得到如下頁面:

表明我們的HTTP服務已經在工作。你可以在文字方塊中輸入ID並通過這個ID獲得一個產品。

9、理解路由

對於每一個HTTP消息,ASP.NET Web API框架都會通過諮詢一個路由表來決定接收該請求的控制器。

在創建一個新的Web API項目時,該項目便會包含一個類似於下面這 樣的默認路由:

/api/{controller}/{id}
{controller}{id}{controller}HTTP請求的方法用來匹配方法名。(此規則僅適用於GET、POST、PUT和DELETE請求。){id}可能的情況下,查詢參數用來匹配參數名。

其中第一個示例,“products”匹配名為ProductsController的控制器。該請求是一個GET請求,因此框架在ProductsController上查找一個名稱以“GET…”開頭的方法。進一步地,這個URI不包含可選的{id}片段,因此,框架查找的是一個不帶參數的方法。

於是,ProductsController->GetAllProducts滿足所有這些需求。

第二個示例與此相同,只是該URI包含了{id}選項。因此,框架會調用GetProduct,它有一個名稱為id的參數。另外,這個URI的值“5”會作為這個id參數的值進行傳遞。框架會根據該方法的簽名,自動地把這個“5”轉換成int類。

這只是個簡單的Demo,個人目前只理解到這麼多,希望能運用到更多更好的項目中,可以更加熟練。