在Ruby中设置请求标头

时间:2012-08-28 14:34:40

标签: ruby rest

我有其余的客户端gem,我正在定义这样的请求:

url = 'http://someurl'
request =  {"data" => data}.to_json
response = RestClient.post(url,request,:content_type => :json, :accept => :json)

但是我需要将HTTP标头设置为某种东西。例如API密钥。这可以在curl中完成:

curl -XHEAD -H x-auth-user: myusername -H x-auth-key: mykey "url"

什么是红宝石中最好的方法?用这个宝石?或者我可以手动完成控制。

4 个答案:

答案 0 :(得分:50)

The third parameter is the headers hash

你可以做你想做的事:

response = RestClient.post( 
  url, 
  request,
  :content_type => :json, :accept => :json, :'x-auth-key' => "mykey")

答案 1 :(得分:21)

你也可以这样做

RestClient::Request.execute(
   :method => :get or :post,
   :url => your_url,
   :headers => {key => value}
)

答案 2 :(得分:4)

我遇到了与Rest-Client(1.7.2)相同的问题我需要同时放置params和HTTP头。

我用这种语法解决了:

params = {id: id, device: device, status: status}
headers = {myheader: "giorgio"}

RestClient.put url, params, headers

我讨厌RestClient: - )

答案 3 :(得分:0)

如果PUT不允许,我们可以在POST的标头中传递它。标题以粗体显示。这对我有用:

act_resp = RestClient.post url, req_param, **:content_type => :json, :method => :put* *