web-dev-qa-db-fra.com

Définition des en-têtes de demande en Ruby

J'ai la gemme cliente restante et je définis une demande comme celle-ci:

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

Cependant, je dois définir l'en-tête HTTP sur quelque chose. Par exemple une clé API. Ce qui pourrait être fait en boucle comme:

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

Quelle est la meilleure façon de faire cela en rubis? En utilisant ce bijou? Ou puis-je le faire manuellement pour avoir plus de contrôle.

29
Charlie Davies

Le troisième paramètre est le hash des en-têtes

Vous pouvez faire ce que vous voulez en:

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

Vous pouvez aussi faire ça

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

J'ai eu le même problème avec Rest-Client (1.7.2). Je dois mettre les paramètres et les en-têtes HTTP.

J'ai résolu avec cette syntaxe:

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

RestClient.put url, params, headers

Je déteste RestClient :-)

4
Giorgio Robino

Si PUT n'est pas autorisé, nous pouvons le passer dans l'en-tête de POST. En-têtes en gras. Cela a fonctionné pour moi:

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

0
Serhii Aksiutin