web-dev-qa-db-fra.com

Comment puis-je me connecter avec Python à une API RESTful à l'aide de clés au lieu du nom d'utilisateur et du mot de passe d'authentification de base?

Je suis nouveau dans la programmation et on m'a demandé de reprendre un projet où je dois changer le code Python actuel que nous utilisons pour se connecter à une API RESTful Ver 1. La société est passée à leur Ver 2 de l'API et nécessitent désormais des ID et des clés pour l'authentification au lieu du nom d'utilisateur et du mot de passe de base. L'ancien code qui fonctionnait pour l'API Ver 1 ressemble à ceci:

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"]

Je peux me connecter à l'API Ver 2 via un terminal en utilisant une chaîne cURL comme celle-ci:

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

J'ai cherché, mais je n'ai pas réussi à trouver un moyen d'obtenir les ID et les clés de la chaîne cURL pour permettre l'accès à l'API Ver 2 à l'aide de Python. Merci de votre considération pour aider un noob à traverser ce changement de code!

12
wautry

vous pouvez ajouter des en-têtes HTTP à une demande

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)
14
r-m-n