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