Ruby httparty получает ответ url или id после сообщения

Как я могу получить URL-адрес ответа или id из проекта rails с httparty в отдельном script после выполнения сообщения?

ruby ​​ script:

  HTTParty.post('http://localhost:3000/change_logs', parameters)

response.body и все остальные не отображают URL и идентификатор ответа

Ответы

Ответ 1

Это работает для меня, возможно, лучший способ сделать это, хотя..

get_change_log_id = HTTParty.post('http://localhost:3000/change_logs.xml', parameters).to_a

get_change_log_id.each do |r|
  r.each do |sub|
    sub2 = sub.to_a
      sub2.each do |s|
        if s.index "id"
          @change_log_id = s.to_s.sub(/[i]/, '').sub(/[d]/, '')
        end
      end
  end
end

Ответ 2

Через два года я нашел способ получить доступ к последнему URI из атрибута request в response:

url      = "http://example.com/redirects/to/www"
response = HTTParty.get(url)
response.request.last_uri.to_s
# => "http://www.example.com"

Ответ 3

К сожалению, эта информация не поддерживается HTTParty. Когда он сталкивается с перенаправлением, он будет следовать за перенаправлением и возвращать результат этого запроса. Он не сохранит какую-либо информацию из первоначального запроса.

Хорошая новость заключается в том, что подобное поведение (обычно) предсказуемо. Веб-приложения обычно перенаправляются на одни и те же вещи после отправки запроса на URL-адрес.

Но если вы действительно хотите это сделать, вам придется использовать библиотеку net/http, которая поставляется с Ruby. Это не намного сложнее, чем HTTParty, но это не намного больше работает.