HTTP方法在热舒服服务(RESTful Services)中的应用

前言

首先说明热舒服服务为本人音译(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,主要有如下二个原则

  1. 直观,语义化的URI。 比如

    • http://test.api.com/employees 返回了所有的职工信息。
    • http://test.api.com/employees/1111 返回了1111职工的详情信息
    • 每个资源都可以通过唯一的URL获取到,比如下边的url
  2. 使用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。

上一篇:前端效率提升-一句命令行实现代码批量格式化


下一篇:Chrome 64 Beta版本3个振奋人心的新特性