我已根据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>
是否有一些传统方式可以返回此信息?
答案 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)