我正在使用get API。当前将数组作为字符串传递。
def fetch_details ids
url = "#{url}/api/v1/get-info?ids=#{ids.join(',')}"
response = Net::HTTP.get_response(URI.parse(URI.encode(url)))
if response.code.to_i == 200
return Oj.load(response.body)
else
return {}
end
end
on the server-side
I am extracting id from this method
def self.get_details(ids)
ids = ids.split(",").map {|x| x.gsub( " ", "")}
end
现在,我想在此添加更多信息。对于每个ID,我想发送一个UUID数组。
ids = [100,21,301]
uuids= {["abc","bca"],["Xyz"],["pqr","345"]}
something like this
hash=[
100=>[abc,bca],
21=>[xyz],
301=>[pqr,345]
}
endpoint use the id and corresponding uuids to join two table
in db query. So I should be able to extract id and corresponding uuid
at the end.
如何传递这两个信息?
要在Rails / Rack中的参数中传递数组,您需要在名称中添加方括号并重复参数:
/api/v1/get-info?ids[]=1&ids[]=2&ids[]=3
您可以使用ActiveSupport中的Hash#to_query
生成查询字符串:
Hash#to_query
如@ 3limin4t0r所指出的,您仅应将此值用于简单值的一维数组,例如字符串和数字。
要传递哈希,请使用方括号,但方括号中应包含键:
irb(main):001:0> { ids: [1,2,3] }.to_query
=> "ids%5B%5D=1&ids%5B%5D=2&ids%5B%5D=3"
同样可以使用/api/v1/get-info?foo[bar]=1&foo[baz]=2
生成查询字符串:
#to_query
键实际上也可以是数字,应该用于传递复杂的结构,例如多维数组或哈希数组。