1 RESTful基础

发布于 2022年 04月 11日 12:20

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种不同类型的消息

  • GET:获取资源的某个表述
  • DELETE:销毁一个资源。
  • POST:基于给定的表述信息,在当前资源的下一级创建新的资源。
  • PUT:用给定的表述信息替换资源的当前状态。
  • HEAD:获取服务器发送过来的报头信息(不是资源的表述),这些报头信息是在服务器发送资源的表述的时候被一起发送过来的。
  • OPTIONS:获取这个资源所能响应的HTTP方法列表。

响应协议的结构

注:HTTP响应

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

  • 状态码:这部分是由三位数字组成的,它简要说明了请求目前的进展。
  • 响应报头:响应报头的发送顺序排在状态码和实体消息体之间,通常是一系列用于描述实体消息体和HTTP响应的键值对。
  • 响应体:这部分是一个采用某种数据格式书写成的文档,并且我们预期该文档是可以被客户端所理解的。

RESTful的特点

  • 每一个URI代表1种资源。
  • 客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。
  • 通过操作资源的表现形式来操作资源。
  • 资源的表现形式是XML或者HTML。
  • 通过操作资源的表现形式来操作资源。
  • 客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

推荐文章