HATEOS由服务器或客户端提供?

时间:2017-04-24 06:19:52

标签: json api hateoas

这是我与HATEOS的第一次接触。我制作了一个前端客户端应用程序,它必须使用这种格式与服务器连接。我看到一个JSON模式,所有超链接都指向相关对象。

我的问题是我应该从客户端应用程序创建这些超链接还是这是服务器的任务?

1 个答案:

答案 0 :(得分:2)

在服务器端生成链接。

您必须区分应用程序状态和服务器上资源的状态。客户端处理应用程序状态。服务器处理资源状态。

应用程序状态确定客户端在完成任务的过程中的“位置”,即:它与服务器交互的位置。

资源状态是服务器存储的持久数据类型,并且持续超过单个交互会话的持续时间。

除了资源本身的表示外,还有一些元数据(JSON表示中的“链接”部分)告诉客户端接下来该资源可以做什么。要实际更改资源状态,客户端必须遵循服务器生成的其中一个提供的链接。

让我们举一个具体的例子说明这些概念。

如果您正在浏览缩略图库并且服务器刚刚向您发送了第23号缩略图,则您的客户端不能简单地对服务器说“下一步”,因为这意味着服务器必须记住您的客户端应用程序已经询问过以前是23号。它必须为每个连接的客户端保留“上下文”。相反,如果客户端明确要求缩略图编号24在图库中前进,则服务器可以免除此负担:在连续两次调用缩略图服务之间,服务器不记得任何内容。 “上下文”(即应用程序状态的相关部分)保留在客户端上并显式传递给服务器。

好消息是,您不必知道您在上一次通话中查看了该特定缩略图。因为,与此图像的表示一起,服务器可以向您发送标记为“上一个”和“下一个”的链接,从而导致相应的缩略图。在服务器生成缩略图23的表示时,服务器具有与您的请求相关的所有信息。它知道你要求的缩略图,以及前一个和下一个的缩略图。因此,它可以在HATEOAS表示中生成相应的链接。

相关问题