Передача массива идентификаторов в качестве параметра запроса net/http

#ruby #net-http

Вопрос:

Я хочу сделать такой запрос GET, используя стандартную клиентскую сеть Ruby/http:

stores/?ids=2,24,13

Я пытаюсь сделать это таким образом, где store_ids-это массив идентификаторов, но это не работает. Если я передам один идентификатор в качестве параметра для идентификаторов, ответ будет правильным.

 def get_stores_info
  uri = URI(BASE_URL)
  params = { ids: store_ids, offset: DEFAULT_OFFSET, limit: DEFAULT_LIMIT }
  uri.query = URI.encode_www_form(params)
  response = Net::HTTP.get_response(uri).body
  result = JSON.parse response
end
 

Комментарии:

1. Вы хотите, чтобы удостоверения личности были такими же? ids=2,24,13 ? Как вы справляетесь с этим на бэкэнде? Обычно, id[]=1amp;id[]=24amp;id[]=13 должно быть отправлено в строке запроса для Rails, чтобы получить параметры как… params[:id] = [2,24,13] .

2. У меня нет контроля над серверной частью, поэтому мне нужно построить запрос следующим образом: ds=2,24,13

Ответ №1:

Вы можете преобразовать store_ids в строку:

 store_ids = [2,24,13]
params = { ids: store_ids.join(','), offset: 0, limit: 25 }

# these are to see that it works.
encoded = URI.encode_www_form(params) # => "ids=[2, 24, 13]amp;offset=0amp;limit=25"
CGI.unescape(encoded) # => ids=2,24,13amp;offset=0amp;limit=25
 

Вот реплика.