#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
Вот реплика.