REST URL设计 - 一次HTTP调用中的多个资源

时间:2009-06-09 11:49:24

标签: http api rest

  

可能重复:
  Rails 3 Custom Route that takes multiple ids as a parameter

据我所知,获取资源的好REST URL如下所示:

/resource/{id}

我遇到的问题是,我经常需要在同时获得大量资源,并且不想创建单独的HTTP为他们每个人打电话

是否有一个整洁的URL设计可以满足这个要求,或者这不适合REST API?

4 个答案:

答案 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