可能重复:
Rails 3 Custom Route that takes multiple ids as a parameter
据我所知,获取资源的好REST URL如下所示:
/resource/{id}
我遇到的问题是,我经常需要在同时获得大量资源,并且不想创建单独的HTTP为他们每个人打电话。
是否有一个整洁的URL设计可以满足这个要求,或者这不适合REST API?
答案 0 :(得分:33)
根据您的回答,您的问题的答案是创建一个包含该组信息的新资源。 e.g。
GET /Customer/1212/RecentPurchases
在单个URL中创建具有许多标识符的复合URL限制了缓存的好处,并为服务器和客户端增加了不必要的复杂性。当您加载包含大量图形的网页时,您看不到
GET /MyPage/image1.jpg;image2.jpg;image3.jpg
这不值得麻烦。
答案 1 :(得分:3)
我会说/resources/foo,bar,baz
(分隔符可能会因ID的性质和审美偏好而异,“foo+bar+baz
”,“foo:bar:baz
”等等。看起来有点“语义”比foo/bar/baz
(“faz of bar of foo”)更整洁?)
如果资源ID是数字,可能,即使使用范围快捷方式,如/resources/1,3,5-9,12
或者,如果您不需要查询具有特定ID的资源,而是查询具有特定属性的资源组,可能需要/resources/state=complete/size>1GiB/!active/
...
答案 2 :(得分:1)
我过去曾经使用过这样的东西。
/resources/a/d/
这将在x和Y之间返回一个列表。
类似
<resources>
<resource>a</resource>
<resource>b</resource>
<resource>c</resource>
<resource>d</resource>
</resources>
您还可以根据资源实际情况对URL进行更高级的搜索。
答案 3 :(得分:0)
也许你可以试试
[GET] /购买/用户:123;极限:30; sort_date:DESC