参考资料

  1. http://www.ruanyifeng.com/blog/2011/09/restful.html
  2. https://www.liwenzhou.com/posts/Go/Gin_framework

基本概念

REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。

REST = Representational State Transfer “表现层状态转化”
一个架构符合REST原则,那么该架构就为REST架构。

Resource

Representational“表现层”指的实际上是Resource的表现层,Resource就是网络上的一个具体资源,可以用一个URI(Uniform Resource Identifier,URL也属于URI)指向它。

Representational

一个Resource(资源)的表现形式,称为Representational(表现层),比如JSON,就是文本的一个具体表现形式。

State Transfer

由于HTTP是无状态协议,所有状态存储在服务端,所以客户端想要和服务度通信,就需要通过某种方式使“状态转化”,而这种转化建立在表示层之上,所以称为“表示层状态转化”。
这种使状态转化的方式就是:

HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

综述

RESTful架构就是:
客户端通过URI定位资源,使用HTTP的四个“动作”在表示层对服务端进行操作,以实现表现层状态转化。

注意:URI中不应该包含动作,因为动作属于“表示层”,而RESTful架构的表示层只能通过HTTP的四个表示方式来表现。

具体例子:

例如,我们现在要编写一个管理书籍的系统,我们可以查询对一本书进行查询、创建、更新和删除等操作,我们在编写程序的时候就要设计客户端浏览器与我们Web服务端交互的方式和路径。按照经验我们通常会设计成如下模式:

请求方法 URL 含义
GET /book 查询书籍信息
POST /create_book 创建书籍记录
POST /update_book 更新书籍信息
POST /delete_book 删除书籍信息

同样的需求我们按照RESTful API设计如下:

请求方法 URL 含义
GET /book 查询书籍信息
POST /book 创建书籍记录
PUT /book 更新书籍信息
DELETE /book 删除书籍信息