WebApi是微軟在VS2012 MVC4版本中綁定發行的,WebApi是完全基於Restful標准的框架。RestFul: (英文:Representational State Transfer,簡稱REST)網上關於Restful定義的資料很多,我個人理解的Restful api 是指基於資源的定義的接口,它的所有接口都是對資源的操作。REST的核心原則是將你的API拆分為邏輯上的資源。這些資源通過http被操作(GET ,POST,PUT,DELETE).Restful Api接口標准的定義滿足CURD,標准的接口定義如下:
- Post:新增記錄
- Put:修改記錄
- Get:獲取數據
- Delete:刪除數據
webapi標准的定義形式為:每個controller都對應一個Model,controller中的接口都應該是對controller所對應的那個model進行的操作,所以上訴的post,get,put,delete都是對model所對應的資源操作。但是在實際的操作中,可能沒有辦法完全滿足這種定義的形式,力求盡量滿足。
WebAPI項目和典型的MVC項目一樣,包含主要的Models,Views,Controllers等文件夾和Global.asax文件。Views對於WebAPI來說沒有太大的用途,Models中的Model主要用於保存Service和Client交互的對象,這些對象默認情況下會被轉換為Json格式的數據進行傳輸,Controllers中的Controller用於提供服務。和普通的MVC一樣,Global.asax用於配置路由規則。
Model
Model必須提供public的屬性,用於json或xml反序列化時的賦值,一個簡單的model定義如下:
public class Person
{
public string name { set; get; }
public string age{ set; get; }
}
Controller
WebAPi中的Controller和MVC的Controller比較類似,只是WebAPI的Controller繼承於ApiController,而MVC的Controller繼承於Controller。一個Controller中可以包含多個Action,Action的響應規則受到Global.asax路由規則的控制。一個簡單的Controller如下
public class CompanyController : ApiController
{
public string Get(int id)
{
return "OK";
}
}
路由
新建立的WebAPI自帶了默認的路由規則,代碼如下:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "api/{controller}/{id}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
}
}
可以看到,默認的路由規則只指向了Controller,沒有指向具體的Action,因為默認情況下,對於Controller中的Action的匹配是和Action的方法名相關聯的。而在實際的調用過程中,我們一般需要制定到特定的Action,為了滿足指向特定的Action需要修改上訴的路由規則:
url: "api/{controller}/{action}/{id}"
