我正在尝试使用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
中的最后一个标签是变量,令牌也是变量。
答案 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"}