Est-ce que quelqu'un sait comment faire l'authentification de base avec RestClient?Comment effectuer une authentification de base avec RestClient?
J'ai besoin de créer un dépôt privé sur GitHub via leur API RESTful.
Est-ce que quelqu'un sait comment faire l'authentification de base avec RestClient?Comment effectuer une authentification de base avec RestClient?
J'ai besoin de créer un dépôt privé sur GitHub via leur API RESTful.
À partir du source, il semble que vous puissiez simplement spécifier un utilisateur et un mot de passe dans le cadre de votre objet de requête.
Avez-vous essayé quelque chose comme:
r = Request.new({:user => "username", :password => "password"})
Aussi, si vous regardez vers le bas dans la section Shell du ReadMe il a un exemple de le spécifier dans le cadre de restshell
.
$ restclient https://example.com user pass
>> delete '/private/resource'
Le plus simple est d'intégrer les détails dans l'URL:
RestClient.get "http://username:[email protected]"
Je cherchais comment effectuer une authentification sans avoir à initialiser une RestClient :: Request. +1 pour l'utilisation de la méthode RestClient.get MAIS le nom d'utilisateur et le mot de passe ne sont-ils pas nécessaires pour s'échapper? On dirait que ce n'est pas aussi facile que ça en a l'air. – AgostinoX
Que faire si mon nom d'utilisateur a un caractère '@'? – Sai
... mais si vous avez des caractères spéciaux comme # dans votre mot de passe, vous obtenez l'excetion: InvalidURIError: mauvais URI (n'est pas URI?) – territorial
Voici un exemple de code de travail où je soutiens basicauth en option, mais ne nécessitent pas l'utilisateur et le mot de passe être intégrés dans l'URL:
def get_collection(path)
response = RestClient::Request.new(
:method => :get,
:url => "#{@my_url}/#{path}",
:user => @my_user,
:password => @my_pass,
:headers => { :accept => :json, :content_type => :json }
).execute
results = JSON.parse(response.to_str)
end
Prenez note si @my_user
et @mypass
ne sont pas instanciés, cela fonctionne très bien sans basicauth.
Pensez à inclure le module en cours d'utilisation pour améliorer cela. par exemple. 'RestClient :: Request' et en ajoutant plus de contexte pour rendre l'exemple que vous avez donné entièrement fonctionnel –