2015-10-07 7 views
5

Sono un neofita della programmazione e mi è stato chiesto di prendere in carico un progetto in cui ho bisogno di cambiare il codice Python corrente che usiamo per connettersi a un'API RESTful di Ver 1. La società è passata alla versione 2 dell'API e ora richiede ID e chiavi per l'autenticazione anziché il nome utente e la password di base. Il vecchio codice che ha funzionato per il Ver 1 API è simile al seguente:Come mi collego con Python a un'API RESTful utilizzando le chiavi invece del nome utente e della password di autenticazione di base?

import requests 
import simplejson as json 
import pprintpp as pprint 

#API_Ver1 Auth 
USER = 'username' 
PASS = 'password' 
url = 'https://somecompany.com/api/v1/groups' 
s = requests.Session() 
s.auth = (USER, PASS) 

r = json.loads(s.get(url).text) 
groups = r["data"] 

posso collegare alle API Ver 2 tramite un terminale utilizzando una stringa cURL come questo:

ricciolo -v -X GET - H "X-ABC-API-ID: xxxxx" -H "X-ABC-API-KEY: nnnnnnnnnnnnnnnnnnnnn" -H "X-DE-API-ID: x" -H "X-DE-API-KEY: nnnnnnnnnnnnnnnnnnnnnnnn" 'https://www.somecompany.com/api/v2/groups/'

ho cercato, ma non hanno avuto successo nel trovare un modo per ottenere gli ID e le Chiavi della stringa di cURL per consentire l'accesso alle API Ver 2 utilizzando Python. Grazie per la tua considerazione nell'aiutare un noob a superare questo cambiamento di codice!

risposta

7

è possibile aggiungere intestazioni HTTP a una richiesta

headers = { 
    'X-ABC-API-ID': 'x-x-x-x-x', 
    'X-ABC-API-KEY': 'nnnnnnnnnnnnnnnnnnnnnnn', 
    'X-DE-API-ID': 'x', 
    'X-DE-API-KEY': 'nnnnnnnnnnnnnnnnnnnnnnnn' 
} 
r = requests.get('https://www.somecompany.com/api/v2/groups/', headers=headers) 
+0

Grazie, mn! La tua risposta ha funzionato come un incantesimo! – wautry