返回位置信息的RESTful方法

返回位置信息的RESTful方法,rest,location,Rest,Location,我已经基于写了一个REST服务器 在某些资源中,返回对象集合而不是单个对象:响应URL“/users/{user\u id}”的方法返回单个“user”对象,但响应URL“/users”的方法返回所有用户。在前一种情况下,我可以包含一个HTTP头“Content Location:URL”(尽管这是多余的,因为调用者有正确的URL)。在后一种情况下,返回集合中的每个项都有自己的位置。我正在考虑为每个项目添加一个XML属性,指定其位置: <users> <user locat

我已经基于写了一个REST服务器

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

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

...
...

是否有一些常规的方法返回此信息?

这是设计超媒体API时的一种非常常见的做法。这也是强烈推荐的。没有官方的“正确”的方式来做这件事,但是有一种媒体类型对如何做有非常明确的规则,那就是hal。看

在hal中,您的文档如下所示:

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

...
...
我之所以选择术语“item”,是因为它已经被psuedo标准化了,但是您可以设置自己的链接关系,在确定自己的链接关系时,您只需要遵循一些规则。(详情请参见)

阅读Bill Burke的“RESTful Java with JAX-RS”,他描述了如何使用
子元素。@Ralph在本例中rel=“self”对于指向单个用户的链接没有意义,因为“self”是用户的集合。然而,在其他一些基于XML的媒体类型中使用atom:link是一种有效的方法。问题是,还可以使用哪些基于XML的媒体?