1

在 HATEOAS 范式中,REST 响应中的链接表示什么,一个动作还是一个资源?我有一个带有类型下拉菜单的订单。一些高级选项字段将根据这些选择加载到表单中。

按照 HATEOAS 范式,不应期望客户端知道或猜测从何处加载这些额外字段。因此,我为提供的每个选项都包含了 1 个链接。链接对象上的rel属性应该提供某种关于链接意图的文档。这是一个正确的实现吗?

'net 上流行的咖啡店示例(在 Ian Robinson 的演讲和 InfoQ 的一篇文章中)使用链接来识别下一个可用的状态转换。这些在精神上是等价的吗?

4

2 回答 2

1

我不会说您的示例是正确的还是不正确的,而是说它是一个兼容的超媒体链接。有不同类型的超媒体链接,您只需要找到最合适的。例如,有时将与资源的链接关系与链接资源分开是有意义的。使用 XML,您可以这样做:

<link rel="type1SpecialOptions" href="http:/yourDomain/specialOptions/type1" />
<link rel="type2SpecialOptions" href="http:/yourDomain/specialOptions/type2" />

而不是仍然有效的超媒体链接样式:

<link specialOptions="http:/yourDomain/specialOptions/type1" />
<link specialOptions="http:/yourDomain/specialOptions/type2" />

选择一种对您的应用程序有意义的链接类型。这篇关于超媒体链接的文章对超媒体链接的类型进行了非常简要的解释。它几乎假设您熟悉超媒体和 REST 的术语,因此首先查看示例,然后按照不同链接类型的链接更好地了解可能的情况。

于 2012-06-18T15:40:04.130 回答
0

您有多种选择:

  1. 定义自定义 rel 值,表示可以对链接资源执行操作。在您的 API 文档中记录这些内容。(最好使用自记录、可取消引用的 HTTP URI 作为您的 rel 值!)
  2. 在您的媒体类型文档中定义文档层次结构中的某些超链接表示可以对其执行非 GET 请求的资源,而其他地方的链接表示仅支持 GET 的资源。你可以在这里尽可能具体。
  3. 使用表格。某些媒体类型(XML、HTML)具有表单的概念。作为表单动作的超链接是明确的动作。请注意,如果没有 AJAX,浏览器目前仅支持 POST。
  4. 用于OPTIONS返回Allow:标头,提供有关可以执行的操作的信息。此选择需要第二次往返,但除了上述三个中的一个或多个之外,还可以支持。
于 2012-12-04T16:43:21.267 回答