在本文中,您将继续探索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 (由翻译者添加)