0

我正在构建一个 RESTful API,用户可以在其中发出关于给定对象的查询,并为该对象附加权重。例如:

http://host.domain.com/cars?id=100&weight=50

(这是一个人为的简化示例,如果这没有太多的语义意义,请致歉!)

复杂之处在于用户可能需要在单个查询中组合多个对象。我想知道是否有标准的 RESTful 方式来做到这一点?例如,我想到的选项包括:

http://host.domain.com/cars?id1=100&weight1=50&id2=200&weight2=90

http://host.domain.com/cars?ids=100,200&weights=50,90

我不喜欢第二个,因为例如,权重是可选的,所以你需要允许这样的事情:

http://host.domain.com/cars?ids=100,200&weights=,90

第一个对我来说似乎更可取,但它似乎会变得复杂,特别是因为我已经有索引参数(例如 x1,x2),这意味着我需要有两个级别的索引(x1_1,x1_2,...)

有人知道这种事情的标准方法吗?或者谁能​​想到一个务实、明智的解决方案?

4

2 回答 2

1

我不确定 Cool URI 是否涵盖了您的问题 - http://www.w3.org/TR/cooluris/

我个人的选择(没有引用支持它)是首先使用服务器配置(重定向或别名)删除查询字符串,以便基本资源显示为:

http://host.domain.com/cars

然后可以附加 ID 和权重列表(在 URI 的“路径信息”中),按您认为合适的方式分隔 - 分号或斜杠。我的选择是后者,因为它使 URI 更易于阅读且更易于键入。唯一会出现问题的是权重有时会被忽略,但如果 ID 是字母数字(可能是散列)并且权重始终是数字,则可以克服这种情况。

于 2012-07-09T13:02:17.767 回答
0

我仍然不知道这是否正确,LeeGee 的建议似乎是合理的,但我最终选择了这样的东西:

http://host.domain.com/cars?id_1=100&weight_1=50&id_2=200&weight_2=90

它最终创建了难看的 URI,但在我看来,它们是一致的、明确的,尤其是在省略可选参数时。

于 2012-07-09T20:35:50.053 回答