Добавьте параметры для отправки запроса с рельсами Rest-client.

Мне нужно сделать запрос Post, используя Rest-Client в моем бэкэнде rails. Я могу успешно сделать это следующим образом: rv = RestClient.post URL, id.to_json, :content_type => 'application/json'

Мне нужно добавить параметр тега, но я не могу заставить его работать. Я пробовал разные комбинации следующих действий: rv = RestClient.post URL, {:params => {:tag => 'TAG'}}, id.to_json, :content_type => 'application/json' и получаю ошибки о синтаксисе (неправильное количество аргументов). Параметры будут идти по URL-адресу, id.to_json будет частью тела. Я не могу найти документацию, в которой говорится об этом конкретном случае использования.


person user3186332    schedule 24.11.2015    source источник
comment
пожалуйста, добавьте код вашего контроллера, на который вы отправляете сообщение, и ваш файл route.rb   -  person Long Nguyen    schedule 24.11.2015
comment
Это будет внешний запрос. Со службой проблем нет, она правильно настраивает синтаксис для вызова.   -  person user3186332    schedule 24.11.2015


Ответы (2)


Вы можете использовать to_query для преобразования хэша в строку HTTP-запроса, например:

url_params = {:tag => "TAG"}.to_query
=> "tag=TAG" 

Затем просто используйте это для создания всего URL-адреса:

rv = RestClient.post "#{URL}?#{url_params}", id.to_json, :content_type => 'application/json'
person rlarcombe    schedule 24.11.2015

есть еще один способ добавить параметры URL в запрос, примечательно, что вы не отправили параметры post в RestClient в правильном порядке, то есть url , payload, headers. а заголовки могут включать любой другой тег, например :params.

rv = RestClient.post(URL, id.to_json, {:params => {:tag => 'TAG'}, :content_type => 'application/json' })

person icarus    schedule 16.06.2020