访问RestClient API中的标题参数获取调用

时间:2013-12-11 06:01:13

标签: ruby-on-rails rest-client

我正在对我的一个控制器进行RestClient api调用,如下所示:

RestClient.get(url,{:secret_key => "abcd"})

但是当我在控制器中打印params时如下:

p params

我在控制器中找不到 secret_key 。从https://github.com/rest-client/rest-client/blob/master/lib/restclient.rb#L71我了解到,如上所述,在RestClient API get调用中传递了头文件参数。

但我不知道如何访问标题。所以,如果有人帮助我解决这个问题,我将非常感激。

4 个答案:

答案 0 :(得分:2)

如果你想在params hash中获取secret_key,你可以通过url字符串传递这个参数,如:

url = "http://your.api?secret_key=secret"
RestClient.get(url)

或者如果你想通过标题传递secret_key,你应该:

RestClient.get(url, {"secret_key" => "secret"})
在rails controller中

secret_key = request.headers["secret_key"]
=> "secret"

答案 1 :(得分:1)

您正在设置标题并检查参数..

因此,第一个参数是请求的参数,第二个是标题

RestClient.get url, {:secret_key => "abcd"}, {:user_agent => user_agent}

如果您只想发送参数

RestClient.get url, :params => {:secret_key => "abcd"}

如果要检查响应标题(RestClient.get(url,{:secret_key => "abcd"})),请执行

response['secrect_key']

答案 2 :(得分:1)

您可以通过url以这种方式传递http params:

RestClient.get("http://your.api?secret_key=secret")

答案 3 :(得分:0)

对于我的rest-client版本(1.6.7),RestClient.get的签名在第二个参数中指定HTTP HEADER参数:

  def self.get(url, headers={}, &block)
    Request.execute(:method => :get, :url => url, :headers => headers, &block)
  end

我记得RestClient.post的内容是可以指定HTTP HEADER参数而不使用大括号:

RestClient.post(url, :content_type => "application/pdf", :accept => "application/json")

我猜想RestClient.get会以类似的方式工作。