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}"
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 .
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
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