我需要在一个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
返回所有对象,但是第一个和第二个。
我该怎么办?谢谢!
答案 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