Premiers pas avec les requêtes python

Installation ou configuration

python-requests est disponible sur PyPI, le Python Package Index, ce qui signifie qu’il peut être installé via pip :

pip install requests

Le code source à jour peut être trouvé sur le [requests GitHub repository][1]

Si vous souhaitez l’installer à partir des sources, vous pouvez le faire soit en clonant le référentiel GitHub :

git clone git://github.com/kennethreitz/requests.git

Ou en récupérant l’archive (-O écrit la sortie dans le fichier ; -L suit les redirections) :

curl -OL https://github.com/kennethreitz/requests/tarball/master

Ensuite, vous pouvez l’installer en exécutant le setup.py

python setup.py install

Quelle que soit la manière dont vous l’avez installé, vous pouvez commencer à l’utiliser en important de la manière habituelle

>>> import requests
>>> requests.get('http://stackoverflow.com')

[1] : https://github.com/kennethreitz/requests

Requêtes GET

requests.get() crée une requête GET :

response = requests.get('https://example.com/')

Transmettez les paramètres de requête sous forme de dictionnaire à l’argument params :

response = requests.get('https://example.com/', params={"a": 1, "b": 2})

Pour les requêtes GET qui peuvent nécessiter une authentification de base, vous pouvez inclure le paramètre “auth” comme suit :

response = requests.get('https://api.github.com/user', auth=('user', 'pass'))

Requêtes POST

Les requêtes POST sont faites avec la méthode request.post().

Si vous devez envoyer une demande de formulaire Web en tant que corps POST, transmettez un dictionnaire avec des paires clé-valeur comme argument data ; requests les encodera dans un corps de type mime application/x-www-form-urlencoded :

r = requests.post('https://github.com/', data={"a": 1, "b": 2})

Si vous avez besoin de POSTer une charge utile json, vous pouvez utiliser json=. Cela définira automatiquement l’en-tête Content-Type sur application/json

r = requests.post('https://github.com/', data={"a": 1, "b": 2})

Autres méthodes de requête

Le module requests possède des fonctions de niveau supérieur pour la plupart des méthodes HTTP :

r = requests.put('https://example.com/', data=put_body)
r = requests.delete('https://example.com/')
r = requests.head('https://example.com/')
r = requests.options('https://example.com/')
r = requests.patch('https://example.com/', data=patch_update)

Lecture de la réponse

response = requests.get("https://api.github.com/events")
text_resp = response.text

Réponse JSON : pour les réponses au format json, le package fournit un décodeur intégré

response = requests.get('https://api.github.com/events')
json_resp = response.json()

Cette méthode lèvera une ValueError en cas de réponse vide ou de contenu non analysable.

Lecture des codes d’état

L’attribut status_code contient le code d’état de la réponse

good_req = requests.get('https://api.github.com/events')
code_200 = good_req.status_code

notfound_req = requests.get('https://api.github.com/not_found')
code_404 = notfound_req.status_code

requests.codes.__dict__ fournira une liste des codes d’état http disponibles.

Il est possible à l’utilisateur raise_for_status de vérifier si le status_code était 4xx ou 5xx et de lever une exception correspondante dans ce cas.

good_req = requests.get('https://api.github.com/events')
good_req.raise_for_status()
# is a 200 status code so nothing happens

notfound_req = requests.get('https://api.github.com/not_found')
notfound_req.raise_for_status()
# raises requests.exceptions.HTTPError: 404 Client Error