J'utilise le code suivant pour créer une connexion :
<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
Ensuite, j'effectue un post de cette manière:
@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 demande fonctionne bien. Le problème est que je ne vois pas le corps de la requête dans les journaux, seulement l'URL de la requête.
Le bûcheron ne fait pas de corps . Peut-être que cela peut être une fonctionnalité facultative, mais par défaut, je ne pense pas que cela devrait jamais faire des corps car ils peuvent être assez gros et gonfleraient le journal très rapidement.
Je pense qu'il existe plusieurs cas d'utilisation où vous voudriez enregistrer le corps entier. J'ai besoin de ça aussi. Oui, les corps peuvent être assez gros, mais nous pouvons utiliser le niveau de journalisation debug
et laisser l'instance de journalisation transmise contrôler la verbosité.
@mtarnovan D'accord. Suivez la demande d'extraction référencée pour les mises à jour. Nous pourrions ajouter la fonctionnalité, mais elle devra être facultative, et elle devra avoir une sorte de garde pour éviter de vider des corps non en texte clair (tels que des réponses compressées ou binaires)
:+1: Clé pour le débogage
Depuis que j'ai trouvé cette page via Google : c'est maintenant supporté.
require "logger"
Faraday.new do |faraday|
faraday.response :logger, ::Logger.new(STDOUT), bodies: true
end
Des paramètres plus précis sont également disponibles si vous en avez besoin. Voir la demande de tirage.
Cela ne semble pas fonctionner pour les requêtes url_encoded
?
Salut @vemv , l'ordre des middlewares est extrêmement important à Faraday.
Pouvez-vous s'il vous plaît fournir votre code d'initialisation de connexion et essayer de mieux expliquer pourquoi cela "ne semble pas fonctionner pour les demandes url_encoded
" ?
Quelle est la sortie que vous obtenez et quelle est celle attendue?
Je sais que c'est ancien, mais personne n'est venu à l'idée que l'OP enregistre la réponse : faraday.response :logger
.
@jpickwell, vous utilisez faraday.response
car le middleware logger
est enregistré en tant que middleware de réponse. En réalité, il enregistre à la fois les demandes et les réponses 😄
je viens de tomber sur ça; par cette ligne, il semble que vous deviez passer deux arguments pour voir le corps de la requête :
Faraday.new do |faraday|
faraday.response :logger, ::Logger.new(STDOUT), body: true, bodies: { request: true, response: true }
end
(sauf si cela a changé dans un commit plus récent 🤔 )
@davidalpert ce n'est pas nécessaire, vous pouvez simplement passer le bodies: true
pour les activer tous les deux, ou utiliser les valeurs séparées comme dans l'exemple ci-dessus pour avoir plus de contrôle.
Je vois qu'il y a une option body: true
dans cet exemple, mais ce n'est malheureusement pas une option valide (peut-être qu'ils se sont trompés de pluriel ?)
Commentaire le plus utile
Depuis que j'ai trouvé cette page via Google : c'est maintenant supporté.
Des paramètres plus précis sont également disponibles si vous en avez besoin. Voir la demande de tirage.