📜  理查森成熟度模型

📅  最后修改于: 2021-01-12 01:32:18             🧑  作者: Mango

理查森成熟度模型

理查森成熟度模型通过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动词及其用法:

Verbs Safety & Idempotency Usage
GET Y/Y It retrieves the information.
POST N/N It is used to perform a variety of actions on the server, such as create a new resource, and update an existing resource, or making a mixture of changes to one or more resources.
DELETE N/Y It is used to delete a resource.
PUT N/Y It is used to update or replace an existing resource or to create a new resource with a URI specified by the client.
HEAD Y/Y It is used to retrieve the same headers as that of GET response but without any body in the response.
OPTIONS Y/Y It is used to find the list of HTTP methods supported by any resource or to ping the server.
TRACE Y/Y It is used for debugging, which echo’s back headers that it has received.

第3级:超媒体控件

3级是最高级别。它是2级和HATEOAS的组合。它还为HATEOAS提供支持。这对自我记录很有帮助。

例如,如果我们向客户发送GET请求,我们将使用自记录的Hypermedia以JSON格式为客户获得响应。

下图显示了该模型的概述: