WCF 定义为后台接口,调用的是方法
RESTful:是一种架构风格,就是以资源为视角,来描述服务的。
移动互联网:json/xml来描述,http方法, 统一了数据操作
表现层的状态转换:资源 ,统一接口,URI,无状态
资源:实体就是资源, json/xml/数据流
统一接口:CRUD,通过http的Method体现 get post put/patch delete
无状态:http无状态 前后没有关联
路由:
1。 启动 Application_Start--WebApiConfig.Register 把路由规则写入一个容器
2。 运行 请求会去容器匹配--找控制器--然后找Action:
a 以特性为准 [HttpGet]
b 以Get开头
c 优先最匹配 api/values/1--Get(int id)
几个问题:
(1)一个资源,同一种操作更新,可能有多个来源途径
(2)版本号 v1/v2
针对(1),MVC提供了特性路由
它在Global.asax.cs里定义
GlobalConfiguration.Configure(WebApiConfig.Register);
// Web API 路由
config.MapHttpAttributeRoutes();
路由规则由ApiController里的Get等方法的特性来定义
例如:
[Route("api/values")] 它表示访问规则是: api/values
[Route("api/values/{id}]" 它表示: api/values/5
[Route("api/values/{name}")]
public string GetByName(string name)
{
return "valueName";
}
[Route("api/values/{name}/ShortName")] --为了与上面的区分,写成这样
public string GetByShortName(string name)
{
return "valueShortName";
}
[Route("api/values/GetByMiddleName/{name}")]
public string GetByMiddleName(string name)
{
return "valueMiddleName";
}
[Route("api/values/{id:int}/GetById")] --约束为int
public string GetById(int id)
{
return "value GetByID";
}

