理查森成熟度模型

本文概述

  • 0级:POX沼泽
  • 级别1:资源
  • 级别2:HTTP动词
  • 第3级:超媒体控件
理查森成熟度模型通过RESTful成熟度对API进行评分。它是由伦纳德·理查森(Leonard Richardson)提出的。理查森成熟度模型是一种根据REST约束对API分级的方法。它将REST方法的主要元素分为四个级别(0到3)。
有四个级别:
  • 0级:POX沼泽
  • 级别1:资源
  • 级别2:HTTP动词
  • 第3级:超媒体控制
例如, 与较低的级别相比, 较高的级别更RESTful。仅当API达到4级时, 我们才将其视为RESTful API。
理查森成熟度模型

文章图片
0级:POX沼泽 级别0也称为POX(普通旧XML)。在级别0, HTTP仅用作用作远程交互的传输协议。它没有像其他HTTP方法和HTTP缓存一样利用HTTP的优势。要获取和发布数据, 我们将请求发送到相同的URI, 并且只能使用POST方法。这些API仅使用一种URI和一种称为POST的HTTP方法。简而言之, 它以REST样式公开SOAP Web服务。
例如, 特定公司可能有许多客户。对于所有不同的客户, 我们只有一个端点。要执行诸如get, delete, update之类的任何操作, 我们使用相同的POST方法。
要获取数据:http:// localhost:8080 / customer
【理查森成熟度模型】要发布数据:http:// localhost:8080 / customer
在以上两个URI中, 我们使用了相同的URI和方法来获取和发布客户。
级别1:资源 当一个API可以区分不同的资源时, 它可能处于级别1。它使用多个URI。每个URI都是特定资源的入口点。它使用适当的URI公开资源。级别1通过将庞大的服务端点分解为多个不同的端点来解决复杂性。它还仅使用一种HTTP方法POST来检索和创建数据。
例如, 如果我们想要特定产品的列表, 则可以访问URI http:// localhost:8080 / products。如果我们想要特定的产品, 请浏览URI http:// localhost:8080 / products / mobile。
构建URI时, 请记住以下几点:
  • 使用域和子域对资源进行逻辑分组或分区。
  • 使用/表示层次关系。
  • 使用和; 表示非等级关系。
  • 使用-和_提高可读性。
  • 使用&分隔参数。
  • 避免包括文件扩展名。
级别2:HTTP动词 级别2表示API必须使用协议属性来处理可伸缩性和失败。在级别2, 每个请求使用正确的HTTP动词。它建议为了真正实现RESTful, 必须在API中使用HTTP动词。对于每个请求, 都提供了正确的HTTP响应代码。
对于所有请求, 我们不会使用单个POST方法。我们在请求资源时使用GET方法, 而在我们想要删除资源时使用DELETE方法。另外, 请使用应用程序协议的响应代码。
例如, 要获取客户, 我们发送带有URI http:// localhost:8080 / customers的请求, 然后服务器发送正确的响应200 OK。
下表显示了HTTP动词及其用法:
动词 安全与幂等 用法
GET Y/Y 它检索信息。
POST N/N 它用于在服务器上执行各种操作, 例如创建新资源, 更新现有资源或对一个或多个资源进行混合更改。
DELETE N/Y 用于删除资源。
PUT N/Y 它用于更新或替换现有资源或使用客户端指定的URI创建新资源。
HEAD Y/Y 它用于检索与GET响应相同的标头, 但响应中没有任何正文。
OPTIONS Y/Y 它用于查找任何资源支持的HTTP方法列表或ping服务器。
TRACE Y/Y 它用于调试, 它回显已收到的回头信息。
第3级:超媒体控件 3级是最高级别。它是2级和HATEOAS的组合。它还为HATEOAS提供支持。这对自我记录很有帮助。
例如, 如果我们向客户发送GET请求, 我们将使用自记录的Hypermedia以JSON格式为客户获得响应。
下图显示了该模型的概述:
理查森成熟度模型

文章图片

    推荐阅读