1 RESTful基础

REST的必备基础知识

1 REST是什么?

REST不是一种协议,也不是一种文件格式,更不是一种开发框架。它是一系列设计约束的集合:无状态、将超媒体作为应用状态的引擎等。

2 REST的基本术语

访问web服务的流程:客户端向标识资源的URL发起一系列HTTP请求,然后服务器在响应中向客户端发送表述。随着时间的推移,客户端通过这些表述建立起了一个资源状态的全景图。最后,客户端发起一个意义重大的PUT、POST或者PATCH请求,将一个表述发送回服务器从而更改资源的状态。

读完这句话你肯定有以下几点疑问?

  1. 什么是资源?
  2. 什么是资源状态?
  3. 什么是表述?
  4. 什么是状态的转换?

下面我们一一解答各个术语的含义

  1. 什么是资源?
  2. 资源一般是可以保存到计算机里面的事物。比如网页,电子文档,数据库的一条记录。在Web中,我们使用URL来为每个资源提供一个全球唯一的地址。将一个事物赋以URL,它就会成为一个资源。

  3. 什么是资源状态?
  4. 资源状态指的是服务器中资源的状态。例如,服务器中有一个拥有三个邮件的邮件列表,那么邮件列表的状态就是拥有三个邮件的邮件列表。如果用户又发送了一条邮件,那么邮件列表的状态就变为拥有四个邮件的邮件列表。

  5. 什么是表述?
  6. 当客户端对一个资源发起一个GET请求的时候,服务器会以一种有效的方式提供一个采集了资源信息的文档作为回应。这就是表述——一种以机器可读的方式对资源当前状态的说明。对于数据库中的一条记录,服务器可以用XML文档、JSON对象、逗号分隔的数值或者用来生成它的SQLINSERT语句来描述它。

  7. 什么是状态的转换?
  8. 我们通常都认为表述是服务器发送给客户端的东西,这是由于在我们上网的时候,发送的大部分的请求都是GET请求,我们一直都在请求获取表述。但是实际上,但是实际上,在POST、PUT或者PATCH请求中,客户端也会向服务器端发送表述,服务器随后的工作就是改变资源状态,这种情况下的表述反映的是将来的表述。

RESTful通过预定消息进行交互

尽管任何事物都可以成为一个资源,但是客户端并不能随心所欲地对资源进行任意的操作。所能进行的操作是有规定的。在一个RESTful系统里,客户端和服务器端只能通过相互发送遵循预定义协议的消息来进行交互。

6种不同类型的消息

响应协议的结构

注:HTTP响应

从上图可以看出HTTP响应由三部分构成:

RESTful的特点