Ruby请求标头,还有一个?tag = tag

时间:2018-12-05 13:23:26

标签: ruby curl rest-client

我正在尝试使用ruby脚本将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中的最后一个标签是变量,令牌也是变量。

1 个答案:

答案 0 :(得分:1)

您非常亲密,现在这对您不起作用,因为"X-Consul-Token" => 'AUTH_TOKEN'被视为url参数而不是标头。

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

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

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