前言
首先说明热舒服服务为本人音译(RESTful Services)出来的名词,因为这样比按词义翻译更容易上口。
Http常用的传输方法一共有5种, DG3P
(DELETE,GET,PATCH,POST,PUT),用来对应web数据传输中增删改查操作,此外还有OPTIONS和HEAD,这些年随着NodeJS的兴起和前后端分离开发方法的流行,热舒服服务的概念也越来越得到越来越多人的支持,本文主要介绍热舒服服务和HTTP方法在其中的应用。
何为REST
REST为具象状态传输(Representational State Transfer)的缩写, 是Roy Thomas Fielding博士2000年在他的博士论文中提出来的概念,
主要包含以下几个方面:
单向通信 Client-Server
所有的接口都是由客户端向服务器发起。
无状态 Stateless
无状态每个请求都是独立的,不会接口之间存在进行依赖,客户端维护请求的状态,比如当前客户端请求的是第7页数据,那么这个第7页的状态是保存在客户端而不是服务端。
客户端缓存 Cache
客户端服务端的静态数据对象相关缓存,以减少相关请求。
接口统一 Uniform Interface
统一的接口,任何资源都可以通过唯一的接口url访问。
系统分层 Layered System
限制组件的行为,对不同职责的组件进行分层。
按需加载 Code-On-Demand
代码按需加载,优化系统的打开速度。
何为RESTful API
RESTful就是遵循REST原则设计的API,主要有如下二个原则
-
直观,语义化的URI。 比如
-
http://test.api.com/employees
返回了所有的职工信息。 -
http://test.api.com/employees/1111
返回了1111职工的详情信息 - 每个资源都可以通过唯一的URL获取到,比如下边的url
-
-
使用HTTP方法定义API的操作。比如:
- 使用
http://test.api.com/employees
的接口,使用了POST方法时候,创建员工,然后返回最新的列表信息。 - URL为
http://test.api.com/employees/1111
,使用PUT方法,修改1111的相关信息。 - 同样使用
http://test.api.com/employees/remove/1111
的接口,使用了DELETE方法,删除1111的员工。
- 使用
HTTP方法的使用规范
HTTP常用的方法主要有5种,DG3P
。
DELETE 删除操作
这个比较简单,从英文意思上就可以猜到
GET 获取数据操作
这个也比较简单,所有要求服务器返回数据的操作就是GET
POST 创建
创建新数据的时候用POST。
PUT 更新或者替换
修改一个已经存在的数据或者替换的时候,用PUT
PATCH 更新或者替换
PATCH和PUT差不多,但从语义上来看,PATCH偏向于数据的修正。
比如用户输入了一串电话号码,可能用PUT,但第二次用户修改电话号码,就属于PATCH,PATCH请求中只包含需要修改的字段,而不是全部
如何传递多个参数
RESTful API经常问到的问题就是如何设计多个参数,答案是:It depends。以下通过一个具体的例子来说明这个情况:
1.假如要修改一个员工。 那么使用的API为http://test.api.com/employees/1111
, 使用的HTTP方法为PUT,
POST中包含的数据
{
name: 'abc',
phone: '13xxxxxx'
}
这里的name和phone并没有在api的url中体现。
2.加入要单项修改一个员工的数据,比如那种一操作就生效的接口,甚至都不用保存,那么使用的API为http://test.api.com/employees/1111/:patch/:value
,这里使用了PATCH的方法,patch参数为要修改的属性,value参数为修改后的值,那么这样就可以很优雅的设计这个API。