RESTful

什么是 REST?

REST是分布式超媒体系统的架构风格,最初由Roy Fielding在2000年的着名论文中提出。

与任何其他架构风格一样,REST也有自己的6个引导约束,如果接口需要被称为RESTful,则必须满足这些约束。这些原则如下:

  1. 客户端 - 服务器 - 通过将用户界面问题与数据存储问题分开,我们通过简化服务器组件来提高跨多个平台的用户界面的可移植性并提高可伸缩性。
  2. 无状态 - 从客户端到服务器的每个请求都必须包含理解请求所需的所有信息,并且不能利用服务器上任何存储的上下文。因此,会话状态完全保留在客户端上。
  3. 可缓存 - 缓存约束要求将对请求的响应中的数据隐式或显式标记为可缓存或不可缓存。如果响应是可缓存的,则客户端缓存有权重用该响应数据以用于以后的等效请求。
  4. 统一接口 - 通过将通用性的软件工程原理应用于组件接口,简化了整个系统架构,提高了交互的可见性。为了获得统一的接口,需要多个架构约束来指导组件的行为。REST由四个接口约束定义:资源识别; 通过陈述来处理资源; 自我描述性的信息; 并且,超媒体作为应用程序状态的引擎。
  5. 分层系统 - 分层系统风格允许通过约束组件行为来使体系结构由分层层组成,使得每个组件不能“看到”超出与它们交互的直接层。
  6. 按需代码(可选) - REST允许通过以小程序或脚本的形式下载和执行代码来扩展客户端功能。这通过减少预先实现所需的功能数量来简化客户端。

REST和HTTP不一样!!
很多人更喜欢将HTTP与REST进行比较。REST和HTTP不一样。

但是,由于REST还打算使web(互联网)更加简化和标准化,他主张更严格地使用REST原则。这就是人们试图开始将REST与网络(HTTP)进行比较的地方。Roy fielding在他的论文中没有提到任何实现指令 - 包括任何协议首选项和HTTP。到时候,您正在遵循REST的6个指导原则,您可以将您的界面称为RESTful。

简而言之,在REST架构风格中,数据和功能被视为资源,并使用统一资源标识符(URI)进行访问。通过使用一组简单,定义明确的操作来执行资源。客户端和服务器通过使用标准化接口和协议(通常是HTTP)来交换资源的表示。

资源与其表示分离,以便可以以各种格式访问其内容,例如HTML,XML,纯文本,PDF,JPEG,JSON等。例如,可以使用和使用关于资源的元数据来控制高速缓存,检测传输错误,协商适当的表示格式,以及执行认证或访问控制。最重要的是,与资源的每次交互都是无状态的。

所有这些原则都有助于RESTful应用程序简单,轻量和快速。

理查森成熟度模型

Leonard Richardson 分析了一百种不同的Web服务设计,并根据它们与REST的兼容程度将它们分为四类。这种REST服务划分模型用于识别其成熟度级别 - 称为Richardson成熟度模型。

Richardson使用三个因素来决定服务的成熟度,即URI,HTTP方法和HATEOAS(超媒体)。服务采用这些技术越多 - 则更成熟。

理查森的模型成熟度水平

在此分析中,理查森将这些成熟度等级描述如下:
在这里插入图片描述

理查森成熟度模型

零级
成熟度的零级别不使用任何URI,HTTP方法和HATEOAS功能。
这些服务具有单个URI并使用单个HTTP方法(通常为POST)。例如,大多数基于Web服务(WS - *)的服务使用单个URI来标识端点,使用HTTP POST来传输基于SOAP的有效负载,从而有效地忽略其余的HTTP谓词。
类似地,基于XML-RPC的服务以普通旧XML(POX)的形式发送数据。这些是使用单个POST方法构建SOA应用程序并使用XML在服务之间进行通信的最原始方式。

一级
成熟度的第一级使用 URI,HTTP方法和HATEOAS中的URI。
这些服务使用许多URI但只有一个HTTP动词 - 通常是HTTP POST。它们为Universe中的每个资源提供URI。每个资源都由唯一的URI单独标识 - 这使得它们优于零级。

二级
成熟度的第二级使用 URI,HTTP方法和HATEOAS中的URI和HTTP。
二级服务托管了许多URI可寻址资源。此类服务支持每个公开资源上的几个HTTP谓词 - 创建,读取,更新和删除(CRUD)服务。这里,通常代表业务实体的资源状态可以通过网络进行操作。
服务设计人员希望人们在掌握API方面付出一些努力 - 通常是阅读提供的文档。
级别2是REST原则的良好用例,它主张基于HTTP请求方法使用不同的动词,并且系统可以具有多个资源。

三级
成熟度的第三级使用所有三个,即URI,HTTP和HATEOAS。
这是Richardson模型中最成熟的一个层次,它鼓励容易发现,并且通过使用HATEOAS可以很容易地使回答变得不言自明。
该服务通过一系列资源引导消费者,从而导致应用程序状态转换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值