WebApi是微軟在VS2012 MVC4版本中綁定發行的,WebApi是徹底基於Restful標準的框架。RestFul: (英文:Representational State Transfer,簡稱REST)網上關於Restful定義的資料不少,我我的理解的Restful api 是指基於資源的定義的接口,它的全部接口都是對資源的操做。REST的核心原則是將你的API拆分爲邏輯上的資源。這些資源經過http被操做(GET ,POST,PUT,DELETE).Restful Api接口標準的定義知足CURD,標準的接口定義以下:web
webapi標準的定義形式爲:每一個controller都對應一個Model,controller中的接口都應該是對controller所對應的那個model進行的操做,因此上訴的post,get,put,delete都是對model所對應的資源操做。可是在實際的操做中,可能沒有辦法徹底知足這種定義的形式,力求儘可能知足。json
WebAPI項目和典型的MVC項目同樣,包含主要的Models,Views,Controllers等文件夾和Global.asax文件。Views對於WebAPI來講沒有太大的用途,Models中的Model主要用於保存Service和Client交互的對象,這些對象默認狀況下會被轉換爲Json格式的數據進行傳輸,Controllers中的Controller用於提供服務。和普通的MVC同樣,Global.asax用於配置路由規則。api
Model必須提供public的屬性,用於json或xml反序列化時的賦值,一個簡單的model定義以下:框架
public class Person { public string name { set; get; } public string age{ set; get; } }
WebAPi中的Controller和MVC的Controller比較相似,只是WebAPI的Controller繼承於ApiController,而MVC的Controller繼承於Controller。一個Controller中能夠包含多個Action,Action的響應規則受到Global.asax路由規則的控制。一個簡單的Controller以下post
public class CompanyController : ApiController { public string Get(int id) { return "OK"; } }
新創建的WebAPI自帶了默認的路由規則,代碼以下:url
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須要修改上訴的路由規則:xml
url: "api/{controller}/{action}/{id}"