REST响应中的链接

时间:2012-06-18 13:34:32

标签: rest hateoas

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

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

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

2 个答案:

答案 0 :(得分: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" />

选择一种对您的应用程序有意义的链接类型。这个article on hypermedia links对超媒体链接的类型有一个非常简短的解释。它几乎假设您熟悉超媒体和REST的术语,所以请先查看第一个示例,然后按照不同链接类型的链接来更好地了解可能的内容。

答案 1 :(得分:0)

有几种选择:

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