3

我正在尝试为酒店预订实施基于 HATEOS 的 REST 服务,但有这样的困惑:

1)除了WADL,客户端如何知道可能的操作及其对应的URI。当客户端点击 REST 服务的根目录时,我是否应该将所有可能的操作和 URI 作为响应?

2)当客户获得一个地区所有住宿选择的列表时,我将返回他询问的地区所有酒店的列表。响应包含:

<accommodation>
  <hotel info="http://welco.me/hotel/xxxxxx" price="5000"/>
  <hotel info="http://welco.me/hotel/yyyyyyy" price="3000"/>
</accommodation>

但是我在这里的查询是客户将如何了解其他相关的可能操作,例如按价格排序的列表?

4

2 回答 2

2
  1. 在回答您的第一个问题时,有几个文档规范允许客户端发现 RESTful API。
  • 昂首阔步
  • JSON主页
  • Google 使用他们自己的Discovery Service,但与 Swagger 和 JSON Home 不同,不幸的是,我认为没有开源库可以帮助您将其公开用于您自己的 API。
  1. 对于您的第二个问题,我倾向于让客户/开发人员发现参数,例如从 Swagger/JSON Home 文档中进行排序。但是,如果它是一个超级强/重要的关系,您也可以在响应中将其作为链接数据返回:
  • HAL中,您可以为links对象提供相关资源的链接。
  • JSON-LD中,您可以添加具有相关 API url 值的字段。然后,您可以添加一个@content以添加信息来描述该关系的含义。
于 2013-08-12T22:42:00.513 回答
0
  1. 您应该使用链接提示一种较旧的方法,即OPTIONS方法,有一些长期存在的警告

  2. 包括使用自定义链接关系的链接,例如http://welco.me/#sort-by-price您将 URI 定义为您想要的任何含义。您应该在该 URI 处提供一些开发人员文档,但客户端应用程序永远不会取消引用它,它只是使用 URI 作为不透明字符串进行相等比较。

于 2013-08-08T09:02:18.683 回答