REST API-什么是HATEOAS?

在本文中,您将继续探索REST API并了解HATEOAS。

查看网页时,您可以查看页面上的数据并对其执行操作。

REST API怎么样? 通常,当您请求REST资源时,您会获得资源信息。 如何发送您可以在响应中使用资源的操作?



您将学到:


  • 什么是HATEOAS?
  • 为什么需要使用HATEOAS?
  • 何时使用HATEOAS?

REST API


这是有关REST API的系列文章中的第五篇:


HATEOAS是什么意思?


术语HATEOAS表示短语“超媒体是应用程序状态”(以超媒体为应用程序状态的引擎)。 为了更深入地了解这一点,我们首先需要了解超媒体的含义。 看一下以下网页:



当浏览器加载页面时,您绝对可以看到该页面必须提供的所有内容。 更有趣的是,该页面还允许您使用此数据执行许多操作,例如:

  • 按下按钮(绿色的“克隆”或“下载”(下载)
  • 单击选项卡(例如,查看“问题”)
  • 还有一些

现在,让我们看看我们的REST API的行为:

如果您查看对RESTful服务器的典型GET请求,例如:



在这种情况下, GET请求 本地主机 :8080 /用户接收到三个用户的数据集。 通过使用GET localhost :8080 / users / 1发送请求,您将仅收到有关第一个用户的信息。 通常,执行REST请求时,只会获取数据,而不会获取任何操作。 这是HATEOAS填补空白的地方。 HATEOAS请求不仅可以发送数据,还可以指示相关操作:



此示例为JSON格式。 另一个示例的XML格式如下所示:



发送此请求以获取帐户信息时,您会同时获得:

  • 帐号和余额数据
  • 提供存款/提款/转移/关闭操作的链接

使用HATEOAS,对REST资源的请求使我既可以执行数据操作,也可以执行与数据相关的操作。

为什么我们需要HATEOAS?


HATEOAS的最重要的单个原因是耦合松散。 如果REST服务的使用者需要对所有资源URL进行硬编码,则它与服务的实现紧密相关。 相反,如果您返回它可用于操作的URL,它将被松散耦合。 URI的结构没有严格的依赖关系,因为它在响应中指出并使用过。 与HATEOAS相关的一些重要主题:

HAL-超文本应用语言


开发RESTful服务时,必须指定如何返回与请求匹配的数据和链接。 HAL是一种格式,提供了一种简单且一致的方式来在REST API中的资源之间建立超链接。 这是一个例子:



使用HAL,您有几种视图类别:

  • 链接 :以组合形式显示
  • 目标 -指定为URI
  • 关系-名称
  • 嵌入式资源 :此REST资源中包含的其他资源
  • 状态:实际资源数据

如果您碰巧使用Spring框架来开发REST服务,那么Spring HATEOAS将是您服务的良好机制。

关于这个问题,有一个作者的视频

总结


在本文中,我们研究了HATEOAS的含义。

使用HATEOAS,对REST请求的响应不仅返回数据,还返回可以对资源执行的操作。

这有助于使应用程序松散耦合。

补充阅读


REST + MongoDB + HATEOAS?

带有弹簧的HATEOAS REST服务

Spring HATEOAS:具有Spring的Hypermedia API (由翻译者添加)

Source: https://habr.com/ru/post/zh-CN483328/


All Articles