Faraday: Фарадей не регистрирует тело запроса POST

Созданный на 9 апр. 2013  ·  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-адрес запроса.

Самый полезный комментарий

Поскольку я нашел эту страницу через Google: теперь это поддерживается.

require "logger"

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

Есть также более тонкие настройки, если они вам нужны. См. запрос на вытягивание.

Все 11 Комментарий

Регистратор не делает тел . Возможно, это необязательная функция, но по умолчанию я не думаю, что она когда-либо должна делать тела, потому что они могут быть довольно большими и очень быстро раздуют журнал.

Я думаю, что есть несколько вариантов использования, когда вы хотели бы зарегистрировать все тело. Мне это тоже нужно. Да, тела могут быть довольно большими, но мы можем использовать уровень журнала debug и позволить переданному экземпляру регистратора управлять подробностью.

@mtarnovan Согласен. Следуйте указанному запросу на вытягивание обновлений. Мы можем добавить эту функцию, но она должна быть включена, и у нее должна быть какая-то защита, чтобы избежать дампа тел, отличных от открытого текста (таких как сжатые или двоичные ответы).

:+1: Ключ для отладки

Поскольку я нашел эту страницу через Google: теперь это поддерживается.

require "logger"

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

Есть также более тонкие настройки, если они вам нужны. См. запрос на вытягивание.

Кажется, это не работает для запросов url_encoded ?

Привет @vemv , порядок промежуточного программного обеспечения чрезвычайно важен в Faraday.
Не могли бы вы предоставить свой код инициализации подключения и попытаться лучше объяснить, почему он «не работает для запросов 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 рейтинги