【问题标题】:RESTful web service - HATEOASRESTful Web 服务 - HATEOAS
【发布时间】:2014-06-01 15:44:08
【问题描述】:

我创建了一个非常简单的 RESTful Web 服务。它只支持 GET (=read) 方法,例如: http://localhost/application/id/xyz

从数据源中查询此 ID 的对应信息并以 JSON 形式返回。 现在我的问题是:(如何)在这种情况下我应该实施 HATEOAS 吗?它甚至有意义吗?我知道 HATEOAS 在结构更复杂时是合理的。但在这种情况下,我无法链接到其他资源。客户端调用特定ID的Web服务,服务器返回信息。

谢谢!

【问题讨论】:

  • 当您提到 HATEOAS 时,我认为只有一个有趣的数据可以由您的 RESTful Web 服务返回,它是自引用超链接,如此页面:spring.io/understanding/HATEOAS
  • 您好,感谢您的链接!
  • 客户端是怎么知道id的?
  • 你好。客户端是从外部源加载表的应用程序。其中一列包含此 ID。

标签: rest web service hateoas


【解决方案1】:

正如您所说的“客户端调用具有特定 ID 的 Web 服务”听起来您已经编写了您的客户端以访问您的服务中的特定 URL,该 URL 具有要访问的 URL生成 由客户端,即您的客户端应用程序已经知道它可以访问http://localhost/application/id/xyz 以获取xyz ID。

如果您想利用 HATEOAS 的某些功能并将自己从这种(轻微的)依赖中解耦,您可以改为查询 http://localhost/application/id?query=xyz,它可能会返回有效链接的列表(如果存在)。这样,您就可以更改链接 URL 的格式或结构,而不会给您的客户带来任何问题(当然,您仍然会以某种方式依赖于查询 URL)。

但是,由于您的使用非常简单,这听起来有点矫枉过正和不必要的工作,所以我建议您在拥有更复杂的系统或客户端之前不必担心 HATEOAS :)

【讨论】:

  • 非常感谢 - 您的答案正是我想要的!
  • 我很高兴能帮上忙 :) 请您支持这个答案,因为我实际上因为有太多低分答案而被禁止回答!谢谢
【解决方案2】:

在 HATEOS 中,您的返回值不是 ID,而是 URL。调用该 URL 会将您链接到网络中的下一个资源。就像包含指向其他网页的链接的网页一样。

【讨论】:

  • 您好,感谢您的回复。我已经知道通过使用 HATEOS,应该返回一个 URL。但这对我的场景有意义吗?我怎样才能实现这一原则?
  • 我不明白为什么它没有意义。当然,如果您不喜欢它,没有人会强迫您使用 HATEOS。正如 GarciaPL 所提到的,使用 spring-data 可以很容易地生成 HATEOS 服务,它会为您生成链接。
  • 感谢您的快速回复 :) 我为我的特殊情况的意义而苦苦挣扎的原因是,除了获取在 HTTP GET 中传递的某个 ID 的信息之外,没有其他操作可用要求。所以只是为了记录 - 如果我在我的 JSON 中插入一个自链接 URL,那么我的 RESTful 环境将满足 HATEOS 的原则?
  • 问题是你的应用程序是否使用超文本作为应用程序状态的引擎!
  • 很抱歉,我的回复很晚。不,不是的。正如我所说,我只查询一种资源,就是这样。实际上,不需要超文本。
猜你喜欢
  • 2011-03-19
  • 1970-01-01
  • 2012-09-12
  • 2012-09-10
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
相关资源
最近更新 更多