如何调试/显示使用RestClient发送的请求

我试图使用RestClient使用post方法访问web服务。 我正在发送指定的授权令牌,但我仍然收到403状态错误,这意味着我被禁止使用该api。 有什么方法可以看到使用http post发送的请求,以便我可以validation标头? 我无法找到任何示例或任何文件提到如何做到这一点?

我的代码与此类似:

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

您可以尝试启用RestClient的日志记录,看看它是否提供了任何有用的输出:

 RESTCLIENT_LOG=stdout path/to/my/program 

或者如果您使用的是Rails

 RESTCLIENT_LOG=stdout bundle exec passenger 

用您选择的服务器替换passenger 。 这会将所有日志记录重定向到标准输出(您的控制台)。

我个人更喜欢在需要检查或排除HTTP请求时使用更详细的工具。

如果您更喜欢命令行,可以尝试curlwget ,或者可以轻松执行请求的许多浏览器扩展之一,检查输出,保存以备将来使用,设置不同的环境等.Postman和Advanced REST Client都是不错的选择。

如果您正在进行更多的REPL开发,那么它就像添加一样简单

 RestClient.log = 'stdout' 

你的代码。

您可以在文档中找到其他有效值 。

如果您不知道(或想要打扰)传入env。 变量到您的应用程序(在我的情况下,它是乘客/ Rails),做类似的事情:

 $ 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 

如果您手动制作请求,则可以使用inspect来显示完整的URL

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