RESTful方式返回位置信息

时间:2011-10-04 11:57:17

标签: rest location

我已根据RESTEasy编写了一个REST服务器。

在某些资源中,返回的是对象集合而不是单个对象:响应URL“/users/{user_id}”的方法返回单个“user”对象,但是响应的方法URL“/users”返回所有用户。在前一种情况下,我可以包含HTTP标头“Content-Location: URL”(尽管这是多余的,因为调用者具有正确的URL)。在后一种情况下,返回集合中的每个项目都有自己的位置。我想为每个项目添加一个XML属性来指定它的位置:

<users>
  <user location="/users/1234">
    ...
  </user>
  <user location="/users/5678">
    ...
  </user>
</users>

是否有一些传统方式可以返回此信息?

1 个答案:

答案 0 :(得分:1)

这在设计超媒体API时非常常见。强烈推荐。没有正式的“正确”方式,但是有一种媒体类型对于如何做到这一点有非常明确的规则。见http://stateless.co/hal_specification.html

你的文件看起来像是:

<resource href="/users">
    <resource rel="item" href="/users/1234">
        ...
    </resource>
    <resource rel="item" href="/users/5678">
        ...
    </resource>
</resource>

我选择了“item”一词,因为它已经伪装成标准化了,但你可以建立自己的链接关系,在确定自己的链接关系时应该遵循一些规则。 (有关详细信息,请参阅RFC5988