2016-12-08 2 views
0

Comment puis-je ajouter Authorization Bearer à une demande POST avec Net::HTTP?Ajouter le hachage `Authorization Bearer` à Net :: HTTP post demande (Ruby)

Je ne trouve d'aide que pour "l'authentification de base" dans la documentation.

req.basic_auth 'user', 'pass' 

Source: https://docs.ruby-lang.org/en/2.0.0/Net/HTTP.html#class-Net::HTTP-label-Basic+Authentication

Je suis en train de reproduire une boucle qui ressemblerait à ceci:

> curl 'http://localhost:8080/places' -d '{"_json":[{"uuid":"0514b...", 
> "name":"Athens"}]}' -X POST -H 'Content-Type: application/json' -H 
> 'Authorization: Bearer eyJ0eXAiO...' 

Actuellement, j'ai appris à:

require 'net/http' 
require 'net/https' 
require 'uri' 

uri = URI('http://localhost:8080/places') 

res = Net::HTTP.post_form(uri, '_json' => [{'uuid': '0514b...', 'name':'Athens'}]) 

Mais je ai du mal à comprendre comment ajouter la partie Authentication: Bearer....

Est-ce que quelqu'un a de l'expérience avec ça?

Répondre

1

Je ne pense pas que vous pouvez ajouter des en-têtes personnalisés avec la méthode post_form. Vous pouvez l'ajouter avec la méthode post. Essayez le code ci-dessous:

uri = URI("http://localhost:8080/places") 
params = [{'uuid': '0514b...', 'name':'Athens'}] 
headers = { 
    'Authorization'=>'Bearer: foobar', 
    'Content-Type' =>'application/json', 
    'Accept'=>'application/json' 
} 

http = Net::HTTP.new(uri.host, uri.port) 
response = http.post(uri.path, params.to_json, headers)