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}"