Faraday: Faraday no registra el cuerpo de la solicitud POST

Creado en 9 abr. 2013  ·  11Comentarios  ·  Fuente: lostisland/faraday

Estoy usando el siguiente código para crear una conexión:

<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

Entonces, estoy realizando una publicación de esta manera:

@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

La solicitud funciona bien. El problema es que no veo el cuerpo de la solicitud en los registros, solo la URL de la solicitud.

Comentario más útil

Desde que encontré esta página a través de Google: ahora es compatible.

require "logger"

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

También hay configuraciones más detalladas disponibles si las necesita. Vea la solicitud de extracción.

Todos 11 comentarios

El registrador no hace cuerpos . Tal vez esta puede ser una característica opcional, pero por defecto no creo que deba hacer cuerpos porque pueden ser bastante grandes e inflarían el registro muy rápidamente.

Creo que hay varios casos de uso en los que querrías registrar todo el cuerpo. Necesito esto también. Sí, los cuerpos pueden ser bastante grandes, pero podemos usar el nivel de registro debug y dejar que la instancia del registrador pasada controle la verbosidad.

@mtarnovan De acuerdo. Siga la solicitud de extracción a la que se hace referencia para obtener actualizaciones. Es posible que agreguemos la función, pero tendrá que ser opcional y deberá tener algún tipo de protección para evitar volcar cuerpos que no sean de texto sin formato (como respuestas comprimidas o binarias)

:+1: Clave para depuración

Desde que encontré esta página a través de Google: ahora es compatible.

require "logger"

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

También hay configuraciones más detalladas disponibles si las necesita. Vea la solicitud de extracción.

¿Esto no parece funcionar para solicitudes de url_encoded ?

Hola @vemv , el orden de los middlewares es extremadamente importante en Faraday.
¿Puede proporcionar su código de inicialización de conexión e intentar explicar mejor por qué "no parece funcionar para solicitudes de url_encoded "?
¿Cuál es el resultado que obtienes y cuál es el esperado?

Sé que esto es antiguo, pero ¿a nadie se le ocurrió que el OP está registrando la respuesta: faraday.response :logger .

@jpickwell usa faraday.response porque el middleware logger está registrado como un middleware de respuesta. En realidad, registra tanto las solicitudes como las respuestas 😄

acabo de encontrar esto; por esta línea parece que necesita pasar dos argumentos para ver el cuerpo de la solicitud:

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

(a menos que eso haya cambiado en una confirmación más reciente 🤔)

@davidalpert eso no es necesario, simplemente puede pasar bodies: true para habilitarlos a ambos, o usar los valores separados como en el ejemplo anterior para tener más control.
Veo que hay una opción body: true en ese ejemplo, pero desafortunadamente no es una opción válida (¿tal vez se equivocaron en el plural?)

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

jordansissel picture jordansissel  ·  5Comentarios

jeffb-stell picture jeffb-stell  ·  5Comentarios

amrrbakry picture amrrbakry  ·  4Comentarios

t3hk0d3 picture t3hk0d3  ·  3Comentarios

jedeleh picture jedeleh  ·  3Comentarios