2018.7.25
什么是REST?
Representational State Transfer 即表现层状态转换,这是一种分布式的万维网软件构架,基于HTTP确定的一组约束和属性,其最成功的实例就是HTTP1.1协议。REST也是当前最流行的分布式Web架构之一。
HTTP1.0协议制定时面向的是Web的静态文本,随着Ajax等出现,简单的静态文本已经无法满足需求,人们迫切需要制定新的协议规范动态富文本的传输和使用。
REST的五个关键词
资源、资源表述、状态转移、统一接口、超文本驱动。
- 资源(resource):资源是对互联网中信息数据的一种抽象性描述,有点像面向对象的“对象”的概念,REST架构即面向资源的架构,资源是整个网络处理的核心。
- 资源表述(representation): 即资源的表现形式,常用的有HTTP文本,Json,XML等。
- 状态转移(state transfer):这里的状态转移和自动机中的概念不同,“状态”指的是资源在某一时刻的表现形式,“转移”是指按照一定的逻辑转化资源表现形式或者传输资源。
- 统一接口(Uniform inference):因为是分布式架构,为了方便不同服务器和用户使用和规范,REST要求使用统一的接口规范。
- 超文本驱动:REST架构的提出很大程度上是用来指导HTTP1.1协议的制定,支持超链接和URI形式的驱动方式,URI可以理解成资源的唯一标志,是资源的地址。
REST的五个架构约束
客户-服务器、无状态、缓存、统一接口、分层系统、按需代码。
- 客户-服务器:REST是一种响应式架构,一般只允许客户端主动向服务器端发起响应请求,服务器端做出对应的响应操作。
- 无状态:无状态是相对于有状态而言的,状态是指服务请求的状态,是用户交互时的会话信息。基于有状态的Web服务会将用户的相关信息保存在与该用户交互的server的session中,Client的用户请求只能被该server接受和理解,不利于负载均衡。基于无状态的Web服务中,Clinet的用户请求必须携带供server参考的全部信息,每一个请求都是独立的,可以被任何可用的server接受,便于进行扩展。
- 缓存:指的是客户端可以缓存一些需要的数据,以便于同样的请求操作复用。
- 统一接口: 参考上述“五个关键词”。
- 分层系统:REST将结构分层的思想使得各层服务器相对独立,各层服务器只需面向直接相邻的服务器或用户,提高了系统的可伸缩性。
- 按需代码(可选):指的是客户端可以选择下载Java applet和JavaScript脚本来扩展系统功能。
REST的六个特征
面向资源、可寻址、连通性、无状态、统一接口、超文本驱动。
- 可寻址:URI是资源的唯一标识(地址),系统可根据URI定位或重定位到资源。
- 连通性:资源在设计时要考虑资源之间的联系,避免存在孤立的资源。