Faraday: 法拉第不记录 POST 请求正文

创建于 2013-04-09  ·  11评论  ·  资料来源: lostisland/faraday

我正在使用以下代码创建连接:

<strong i="6">@connection</strong> = Faraday.new(HOST, ssl: { verify: true }) do |faraday|
  faraday.request :url_encoded
  faraday.response :logger
  faraday.adapter Faraday.default_adapter
end

然后,我以这种方式执行一个帖子:

@connection.post do |request|
  request.url "#{my_uri.path}?#{my_uri.query}"
  request.headers['Content-Type'] = 'application/json'
  request.body = my_object.to_json
end

该请求工作正常。 问题是我在日志中没有看到请求正文,只有请求 url。

最有用的评论

因为我通过谷歌找到了这个页面:现在支持了。

require "logger"

Faraday.new do |faraday|
  faraday.response :logger, ::Logger.new(STDOUT), bodies: true
end

如果您需要,还可以使用更细粒度的设置。 请参阅拉取请求。

所有11条评论

记录器不做 body 。 也许这可以是一个可选功能,但默认情况下我认为它不应该做身体,因为它们可能非常大并且会很快膨胀日志。

我认为有多个用例需要记录整个正文。 我也需要这个。 是的,body 可能非常大,但我们可以使用日志级别debug并让传递的记录器实例控制详细程度。

@mtarnovan同意。 按照引用的拉取请求进行更新。 我们可能会添加该功能,但它必须是可选的,并且需要某种保护以避免转储非明文正文(例如压缩或二进制响应)

:+1: 调试键

因为我通过谷歌找到了这个页面:现在支持了。

require "logger"

Faraday.new do |faraday|
  faraday.response :logger, ::Logger.new(STDOUT), bodies: true
end

如果您需要,还可以使用更细粒度的设置。 请参阅拉取请求。

这似乎不适用于url_encoded请求?

@vemv ,中间件的顺序在法拉第非常重要。
您能否提供您的连接初始化代码并尝试更好地解释为什么它“似乎不适用于url_encoded请求”?
你得到的输出是什么,预期的输出是什么?

我知道这很旧,但是任何人都没有想到 OP 正在记录响应: faraday.response :logger

@jpickwell您使用faraday.response因为logger中间件已注册为响应中间件。 实际上,它同时记录请求和响应😄

刚遇到这个; 通过这一行,您似乎需要传递两个参数才能查看请求正文:

Faraday.new do |faraday|
  faraday.response :logger, ::Logger.new(STDOUT), body: true, bodies: { request: true, response: true }
end

(除非在最近的提交中发生了变化🤔)

@davidalpert这不是必需的,您可以简单地传递bodies: true来启用它们,或者使用上面示例中的单独值来获得更多控制。
我看到该示例中有一个body: true选项,但不幸的是,这不是一个有效的选项(也许他们弄错了复数?)

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ryanbyon picture ryanbyon  ·  3评论

mokolabs picture mokolabs  ·  3评论

yusefu picture yusefu  ·  3评论

luizkowalski picture luizkowalski  ·  3评论

t3hk0d3 picture t3hk0d3  ·  3评论