Ruby 请求 headers 还有一个 ?tag=tag

Ruby request headers but also a ?tag=tag

我正在尝试使用 ruby 脚本向 consul 发送 API 调用,我有一个命令应该接近我需要的命令,但我无法让其余的工作.

RestClient::Request.execute(method: :get, url: path, timeout: 10, headers: {params: {"tag": tag, "X-Consul-Token" => encode_auth_token}})

如果我这样做了,我几乎需要电话就像

curl --header "X-Consul-Token: <my token>" <my path>?tag=tag 其中 ?tag=tag 中的最后一个标记是一个变量,令牌也是一个变量。

你非常接近,现在这对你不起作用,因为 "X-Consul-Token" => 'AUTH_TOKEN' 被视为 url 参数而不是 header。

req.url 
#=> "http://example.com?tag=tag&X-Consul-Token=AUTH_TOKEN"
req.headers 
#=> {}

要解决此问题,您只需要将参数和其他 header 标签分开即可:

req=  RestClient::Request.new(
  method: :get, 
  url: 'http://example.com/', 
  timeout: 10, 
  headers: {params: {tag: 'tag'},
           "X-Consul-Token" => 'AUTH_TOKEN'}) #notice outside of params
req.url
#=> "http://example.com?tag=tag"
req.headers 
#=> {"X-Consul-Token"=>"AUTH_TOKEN"}