如何检查HTTParty生成的完整URL?

时间:2015-05-13 16:31:19

标签: ruby-on-rails ruby httparty

我想查看HTTParty gem从我的参数构建的完整URL,无论是在提交之前还是之后,都没关系。

我也很乐意从响应对象中抓取这个,但我也看不到这样做的方法。

(背景点)

我正在使用HTTParty gem为API构建包装器。这是广泛的工作,但偶尔我从远程站点得到一个意外的响应,我想深入了解为什么 - 这是我发送错误的东西?如果是这样,什么?我是否以某种方式违反了请求?查看原始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(',') }

很明显,HTTParty构成查询字符串的默认方法与API设计者的首选格式不一致。这没关系,但确切地知道需要什么是很尴尬的。

2 个答案:

答案 0 :(得分:21)

您未在示例中传递基URI,因此无效。

更正,您可以像这样获取整个网址:

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" 

答案 1 :(得分:8)

您可以通过首先设置:

来查看HTTParty发送的请求的所有信息
class Example
  include HTTParty
  debug_output STDOUT
end

然后它会将请求信息(包括URL)打印到控制台。