在ruby on rails的get api中传递数组的数组

问题描述 投票:0回答:1

我正在使用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.

如何传递这两个信息?

ruby-on-rails ruby api post get
1个回答
2
投票

要在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

键实际上也可以是数字,应该用于传递复杂的结构,例如多维数组或哈希数组。

© www.soinside.com 2019 - 2024. All rights reserved.