Как проверить полный URL-адрес, созданный HTTParty?

Я хочу посмотреть полный URL-адрес, который был создан из моих параметров, который был создан из моих параметров, до или после его отправки, это не имеет значения.

Я также был бы счастлив схватить это из объекта ответа, но я тоже не вижу способа сделать это.

(бит фона)

Я создаю оболочку для API, используя драгоценный камень HTTParty. Его широко работает, но иногда я получаю неожиданный ответ от удаленного сайта, и я хочу понять, почему - это что-то, что Ive отправил неправильно? Если да, то? Я каким-то образом исказил запрос? Если посмотреть на необработанный URL-адрес, это будет полезно для устранения неполадок, но я не могу понять, как это сделать.

Например:

HTTParty.get('http://example.com/resource', query: { foo: 'bar' })

Предположительно генерирует:

http://example.com/resource?foo=bar

Но как я могу это проверить?

В одном случае я сделал это:

HTTParty.get('http://example.com/resource', query: { id_numbers: [1, 2, 3] }

Но это не сработало. Через эксперименты я смог произвести то, что сработало:

HTTParty.get('http://example.com/resource', query: { id_numbers: [1, 2, 3].join(',') }

Таким образом, подход HTTPartys по умолчанию к формированию строки запроса не соответствовал предпочтительному формату API-дизайнеров. Thats штраф, но было неловко выяснить, что именно нужно.

Ответ 1

Вы не передали базовый URI в своем примере, чтобы он не работал.

Исправляя это, вы можете получить весь URL-адрес следующим образом:

res = HTTParty.get('http://example.com/resource', query: { foo: 'bar' })
res.request.last_uri.to_s
# => "http://example.com/resource?foo=bar" 

Использование класса:

class Example
  include HTTParty
  base_uri 'example.com'

  def resource
    self.class.get("/resource", query: { foo: 'bar' })
  end
end

example = Example.new
res = example.resource
res.request.last_uri.to_s
# => "http://example.com/resource?foo=bar" 

Ответ 2

Вы можете просмотреть всю информацию о запросах, которые HTTParty отправляет с помощью первой настройки:

class Example
  include HTTParty
  debug_output STDOUT
end

Затем он распечатает информацию о запросе, включая URL, на консоли.