ruby - Cómo depurar/mostrar la solicitud enviada usando RestClient
http debugging (4)
En caso de que no sepas (o quieras molestar) pasar en env. variable a su aplicación (en mi caso fue Pasajero / Carriles), haga algo similar:
$ 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
Estoy tratando de usar RestClient para acceder a un servicio web utilizando el método de publicación. Estoy enviando el token de autorización según lo especificado, pero aún recibo un error de estado 403, lo que significa que tengo prohibido usar esa API. ¿Hay alguna forma en que pueda ver la solicitud que se envía con la publicación http para poder verificar los encabezados? ¿No puedo encontrar ningún ejemplo o documentación que mencione cómo hacerlo?
Mi código es similar a esto:
token = get_token
response = RestClient.post "https://api-dev.xxx.com/software/services/search/ABC",
:authorization => "Bearer #{token}"
Podría intentar habilitar el RestClient
de RestClient
y ver si esto proporciona algún resultado útil:
RESTCLIENT_LOG=stdout path/to/my/program
o si está utilizando rieles
RESTCLIENT_LOG=stdout bundle exec passenger
Reemplazo de passenger
con su elección de servidor. Esto redireccionará todo el registro a la salida estándar (su consola).
Personalmente, prefiero usar herramientas más detalladas cuando necesito inspeccionar o solucionar problemas de solicitudes HTTP.
Puede probar curl
o wget
si prefiere la línea de comandos, o una de las muchas extensiones de navegador que le permiten realizar solicitudes fácilmente, inspeccionar resultados, guardar para uso futuro, configurar diferentes entornos, etc. Tanto Postman como Advanced REST Client son buenas opciones .
Si está haciendo más de un tipo de desarrollo REPL, puede ser tan fácil como agregar
RestClient.log = ''stdout''
a su codigo
Puedes encontrar otros valores válidos en los documentos .
Si realiza una solicitud manualmente, puede usar inspect para mostrar la URL completa
req = RestClient::Request.new(
:method => :post,
:url => "https://api-dev.xxx.com/software/services/search/ABC",
headers: {params:{:authorization => "Bearer #{token}"}})
puts req.inspect