2012-06-18 58 views
1

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

由HATEOAS范式去,客户不应期望知道或猜测从哪里加载这些额外的字段。因此,我提供了每个选项的1个链接。链接对象上的rel属性应该提供关于链接意图的某种文档。这是一个正确的实施?

受欢迎的咖啡店例如在净可用(伊恩·罗宾逊的谈话,并在相关的文章)使用环节,以确定下一个可用的状态转换。这些精神是否相同?

回答

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对超媒体链接的类型有一个非常简短的解释。它几乎假定您熟悉超媒体的术语和休息所以看例子第一,然后按照不同的链接类型的链接,以获得更好的理解什么是可能的。

0

有几种供你选择:

  1. 定义一个象征,一个可以采取行动的链接资源的自定义相对值。在您的API文档中记录这些信息。 (最好用自我记录,dereferencable HTTP URI作为您的相对值!)
  2. 定义你的媒体类型的文档,该文档在某些超链接层次结构表示可以有非GET对其执行请求的资源,和链接其他地方代表资源那只支持GET。 YOu可以像你喜欢的那样具体。
  3. 使用表格。某些媒体类型(XML,HTML)具有表单的概念。作为表单动作的超链接是明确的动作。请注意,如果没有AJAX,浏览器目前仅支持POST。
  4. 使用OPTIONS返回一个Allow:头,就可以执行的操作提供信息。此选择需要第二次往返,但除了上述三个中的一个或多个以外,还可以支持。