服务器或客户端提供的 HATEOAS?
HATEOS provide by server or client?
这是我第一次接触HATEOS。我制作了一个前端客户端应用程序,它必须使用这种格式与服务器连接。我看到一个 JSON 模式,所有超链接都指向相关对象。
我的问题是我应该从客户端应用程序创建这些超链接还是服务器的任务?
链接在服务器端生成。
您必须区分应用程序状态和服务器上资源的状态。客户端处理应用程序状态。服务器处理资源状态。
应用程序状态确定客户端在完成任务的过程中所处的“位置”,即:它在与服务器的交互中所处的位置。
资源状态是服务器存储的一种持久数据,持续时间超过单个交互会话的持续时间。
随着资源本身的表示,一些元数据(JSON 表示中的“链接”部分)告诉客户端下一步可以用该资源做什么。要实际更改资源状态,客户端必须遵循服务器生成的提供的链接之一。
让我们举一个具体的例子来说明这些概念。
如果您正在浏览缩略图库并且服务器刚刚向您发送了编号为 23 的缩略图,则您的客户端不能简单地对服务器说“下一个”,因为这意味着服务器必须记住您的客户端应用程序之前要求23号。而且它必须为每个连接的客户端保留该“上下文”。相反,如果客户端明确要求缩略图编号 24 在画廊中前进,则服务器会从该负担中解脱出来:在对缩略图服务的两次连续调用之间,服务器无需记住任何内容。 “上下文”(即应用程序状态的相关部分)保存在客户端并显式传递给服务器。
好处是您不必知道您在上次通话中查看的是特定缩略图。因为,连同此图像的表示,服务器可以向您发送标有“上一个”和“下一个”的链接,指向相应的缩略图。在服务器生成缩略图 23 的表示时,服务器拥有与您的请求相关的所有信息。它知道您请求的是什么缩略图,以及上一个和下一个是什么。因此,它可以在 HATEOAS 表示中生成相应的链接。
这是我第一次接触HATEOS。我制作了一个前端客户端应用程序,它必须使用这种格式与服务器连接。我看到一个 JSON 模式,所有超链接都指向相关对象。
我的问题是我应该从客户端应用程序创建这些超链接还是服务器的任务?
链接在服务器端生成。
您必须区分应用程序状态和服务器上资源的状态。客户端处理应用程序状态。服务器处理资源状态。
应用程序状态确定客户端在完成任务的过程中所处的“位置”,即:它在与服务器的交互中所处的位置。
资源状态是服务器存储的一种持久数据,持续时间超过单个交互会话的持续时间。
随着资源本身的表示,一些元数据(JSON 表示中的“链接”部分)告诉客户端下一步可以用该资源做什么。要实际更改资源状态,客户端必须遵循服务器生成的提供的链接之一。
让我们举一个具体的例子来说明这些概念。
如果您正在浏览缩略图库并且服务器刚刚向您发送了编号为 23 的缩略图,则您的客户端不能简单地对服务器说“下一个”,因为这意味着服务器必须记住您的客户端应用程序之前要求23号。而且它必须为每个连接的客户端保留该“上下文”。相反,如果客户端明确要求缩略图编号 24 在画廊中前进,则服务器会从该负担中解脱出来:在对缩略图服务的两次连续调用之间,服务器无需记住任何内容。 “上下文”(即应用程序状态的相关部分)保存在客户端并显式传递给服务器。
好处是您不必知道您在上次通话中查看的是特定缩略图。因为,连同此图像的表示,服务器可以向您发送标有“上一个”和“下一个”的链接,指向相应的缩略图。在服务器生成缩略图 23 的表示时,服务器拥有与您的请求相关的所有信息。它知道您请求的是什么缩略图,以及上一个和下一个是什么。因此,它可以在 HATEOAS 表示中生成相应的链接。