参考资料
基本概念
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 | 删除书籍信息 |