REST API:一个GET中的多个资源

时间:2014-08-04 15:39:36

标签: ruby-on-rails api rest ruby-on-rails-4

我需要在一个GET请求中获取几个ID,如

http://localhost:3000/api/positions/ids

我已经尝试过一些方法来做到这一点,但没有人工作:

这只返回第一个对象:

http://localhost:3000/api/positions/1,2

http://localhost:3000/api/positions?id=1,2

那个

http://localhost:3000/api/positions?id=1&id=2

返回所有对象,但是第一个和第二个。

我该怎么办?谢谢!

1 个答案:

答案 0 :(得分:2)

参数中数组的语法是id[]=1&id[]=2&id[]=3,但是如果你有大量的id,那么这可能变得非常麻烦和丑陋。我建议您使用参数id作为单个ID和单独的参数ids,该参数采用连字符分隔的单个字符串,例如

#get a single resource
/api/positions?id=123

#get a list of resources
/api/positions?ids=123-67-456-1-3-5

现在你可以使你的控制器代码如下:

if params[:id]
  @foos = Foo.find_all_by_id(params[:id])
elsif params[:ids]
  @foos = Foo.find_all_by_id(params[:ids].split("-"))
end