menu

REST(Representational State Transfer)

Posted on 16/12/2019

REST(Representational State Transfer)

REST是一种软件架构风格,这种风格包含了一系列用于创建网络服务(Web Service)的约束(Constraint)。满足这些约束的网络服务称为 RESTful 风格的网络服务。

网络资源是互联网上可以通过URI定位或访问的文档、数据、数据库记录等一系列资源。通过URI向RESTful风格的网络服务发送网络访问请求,RESTful 风格的网络服务的响应向客户端发送以HTML、XML、JSON等格式的响应。一般通过HTTP协议访问 RESTful 风格的网络服务。RESTful 风格的网络服务支持HTTP协议支持的方法(method)对网络资源进行操作,常见的方法有:GET, POST, DELETE, PUT, PATCH等。GET, POST, DELETE方法具有幂等性,即向网络服务放松多次提交,对网络资源的影响相同。

满足 RESTful 风格的网络服务可以获得一系列的 非功能性属性,这些属性如下:

  • 高性能
  • 复用性好
  • 便于扩展

RESTful风格的网络服务应符合以下6点约束:

Client-Server 架构

RESTful 风格的网络应用是Client-Server架构的,这种架构有利于将数据展示和数据存储解藕。数据可以根据需要以不同的形式展示。同时,数据存储可以根据需要进行扩展。对数据展示和数据存储相互分离,互不影响。

通信的无状态

客户端与服务端之间的通信是无状态的,即服务端不记录有关客户端的任何信息,客户端的通信报文中包含通信所需的所有信息。

分层设计

客户端不能感知是直接与服务端通信还是与中间层通信。分层设计具有如下好处:

  • 方便的增加通用的功能性分层,比如防火墙,用于增强安全性。
  • 增加缓存,减少客户端与服务端之间的通信,增加性能。
  • 分层中加入负载均衡,可以提升服务器的性能。

缓存功能

网络资源应描述其是否支持缓存,以及缓存的时间限制,这样网络资源可以在客户端和中间层缓存,减少不必要的通信,增强性能。

根据需要,返回增强客户端功能的应用

服务端通过返回Applet或Javascript脚本,扩展客户端功能。

统一接口

这是 RESTful 风格网络应用最基本的限制,包括以下4个方面:

  • 客户端通过统一的URI访问网络资源,并且网络资源的展现形式并不是其存储形式。不同的数据展示形式,所访问的URI相同。客户端与服务端之间通过MIME来确定网络资源的展示形式。
  • 服务端返回的网络资源包含对该资源进行操作所必须的要素。
  • 服务端返回的网络资源是自我描述的,比如,应包含该资源的媒体类型、编码方式等。
  • HATEOAS(Hypermedia as the engine of application state):服务端返回的网络资源,应包括进行下一步相关操作所需的URI。
Top