Faraday: Faraday não registrando o corpo da solicitação POST

Criado em 9 abr. 2013  ·  11Comentários  ·  Fonte: lostisland/faraday

Estou usando o seguinte código para criar uma conexão:

<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

Então, estou realizando um post desta forma:

@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

O pedido funciona bem. O problema é que não estou vendo o corpo da requisição nos logs, apenas a url da requisição.

Comentários muito úteis

Desde que encontrei esta página através do Google: isso agora é suportado.

require "logger"

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

Há também configurações mais refinadas disponíveis, se você precisar delas. Veja a solicitação de pull.

Todos 11 comentários

O madeireiro não faz corpos . Talvez isso possa ser um recurso opcional, mas por padrão eu não acho que deveria fazer corpos porque eles podem ser muito grandes e inflariam o log muito rapidamente.

Eu acho que existem vários casos de uso em que você deseja registrar todo o corpo. Eu preciso disso também. Sim, os corpos podem ser bem grandes, mas podemos usar o nível de log debug e deixar que a instância do registrador passada controle a verbosidade.

@mtarnovan Concordo. Siga a solicitação pull referenciada para atualizações. Podemos adicionar o recurso, mas ele terá que ser opt-in e precisará ter algum tipo de proteção para evitar despejar corpos que não sejam de texto simples (como respostas compactadas ou binárias)

:+1: Chave para depuração

Desde que encontrei esta página através do Google: isso agora é suportado.

require "logger"

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

Há também configurações mais refinadas disponíveis, se você precisar delas. Veja a solicitação de pull.

Isso não parece funcionar para solicitações url_encoded ?

Oi @vemv , a ordem dos middlewares é extremamente importante no Faraday.
Você pode fornecer seu código de inicialização de conexão e tentar explicar melhor por que "não parece funcionar para solicitações url_encoded "?
Qual é a saída que você obtém e qual é a esperada?

Eu sei que isso é antigo, mas não ocorreu a ninguém que o OP está registrando a resposta: faraday.response :logger .

@jpickwell você usa faraday.response porque o middleware logger é registrado como um middleware de resposta. Na realidade, ele registra solicitações e respostas 😄

acabei de me deparar com isso; por esta linha , parece que você precisa passar dois argumentos para ver o corpo da solicitação:

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

(a menos que isso tenha mudado em um commit mais recente 🤔)

@davidalpert isso não é necessário, você pode simplesmente passar o bodies: true para habilitar ambos, ou usar os valores separados como no exemplo acima para ter mais controle.
Vejo que há uma opção body: true nesse exemplo, mas essa não é uma opção válida infelizmente (talvez eles tenham errado o plural?)

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

mvastola picture mvastola  ·  4Comentários

yusefu picture yusefu  ·  3Comentários

JasonBarnabe picture JasonBarnabe  ·  4Comentários

subvertallchris picture subvertallchris  ·  5Comentários

mattmill30 picture mattmill30  ·  4Comentários