web-dev-qa-db-fra.com

Comment déboguer/afficher une demande envoyée à l'aide de RestClient

J'essaie d'utiliser RestClient pour accéder à un service Web à l'aide de la méthode post. J'envoie le jeton d'autorisation comme spécifié, mais j'obtiens toujours une erreur d'état 403, ce qui signifie que je ne suis pas autorisé à utiliser cette API. Existe-t-il un moyen de voir la demande envoyée avec http post afin de pouvoir vérifier les en-têtes? Je ne suis pas en mesure de trouver un exemple ou une documentation mentionnant comment faire cela?

Mon code est similaire à ceci:

token = get_token

response = RestClient.post "https://api-dev.xxx.com/software/services/search/ABC",
  :authorization => "Bearer #{token}"
26
user3075906

Si vous faites plus d’un développement REPL, cela peut être aussi simple que d’ajouter

RestClient.log = 'stdout'

à votre code. 

Vous pouvez trouver d'autres valeurs valides dans la documentation .

48
Marius Butuc

Au cas où vous ne savez pas (ou ne voulez pas vous déranger) de passer en env. variable pour votre application (dans mon cas, c'était Passenger/Rails), faites quelque chose de similaire:

$ cat >/usr/share/foreman/config/initializers/00_rest_client.rb <<'EOT'
require 'rest_client'
RestClient.log =
  Object.new.tap do |proxy|
    def proxy.<<(message)
      Rails.logger.info message
    end
  end
EOT
1
lzap

Si vous créez une demande manuellement, vous pouvez utiliser inspect pour afficher l'URL complète.

req = RestClient::Request.new(
    :method => :post,
    :url => "https://api-dev.xxx.com/software/services/search/ABC",
    headers: {params:{:authorization => "Bearer #{token}"}})

puts req.inspect
0
xsunsmile