Python requests est une bi­blio­thèque très appréciée qui permet d’envoyer des requêtes HTTP et d’en vérifier les réponses. Même si .get() est la méthode la plus im­por­tante du module, il existe de nom­breuses autres options.

Python requests, c’est quoi au juste ?

Python requests est une bi­blio­thèque tierce largement utilisée pour envoyer des requêtes HTTP au sein du langage de pro­gram­ma­tion. La pierre angulaire de ce système est une interface claire et efficace qui facilite gran­de­ment l’in­té­gra­tion de fonc­tion­na­li­tés tierces. La bi­blio­thèque Python requests met à dis­po­si­tion une série d’outils qui per­met­tent d’envoyer des requêtes HTTP et d’en recevoir les réponses. Même si le module Python requests est largement utilisé et fortement conseillé, il ne fait pas partie de l’ins­tal­la­tion standard de Python.

Managed Nextcloud de IONOS Cloud
Tra­vail­lez en équipe dans votre propre Cloud
  • Sécurité des données
  • Outils de col­la­bo­ra­tion intégrés
  • Hé­ber­ge­ment dans des data centers européens

Ins­tal­la­tion et démarrage de la bi­blio­thèque Python requests

Avant d’installer Python requests, il est re­com­mandé de mettre en place une machine virtuelle dans laquelle vous pourrez essayer la bi­blio­thèque sans crainte. Pour l’ins­tal­la­tion, utilisez pip. Voici à quoi ressemble le code :

$ python -m pip install requests
bash

Pour utiliser la bi­blio­thèque après l’avoir installée avec succès, vous avez besoin de ce code :

import requests
python

Fonc­tion­ne­ment, syntaxe et méthodes

Comme d’autres outils com­pa­rables, Python requests envoie une requête HTTP qui reçoit une réponse à la suite d’une trans­mis­sion réussie. Cette réponse est un objet qui contient toutes les in­for­ma­tions im­por­tantes telles que contenu, codage et statut. La syntaxe d’une telle requête se présente toujours comme suit :

requests.methode(url, **kwargs)
python
Note

**kwargs re­pré­sente des méthodes op­tion­nelles que vous pouvez remettre à des méthodes comme headers, files ou cookies.

Même si .get() est la fonction que vous uti­li­se­rez le plus souvent, Python requests propose également d’autres méthodes. Voici les prin­ci­pales fonctions dis­po­nibles :

  • .delete(url,** kwargs) : supprime une source spé­ci­fique.
  • .get(url, parameter=None,** kwargs) : sert à demander des in­for­ma­tions à un serveur.
  • .head(url,** kwargs) : effectue une requête au serveur, mais se limite à l’en-tête.
  • .patch(url, data=None,** kwargs) : optimise les per­for­mances en envoyant uni­que­ment les mo­di­fi­ca­tions à la source.
  • .post(url, data=None, json=None,** kwargs) : utilisé prin­ci­pa­le­ment pour trans­mettre des données de for­mu­laire à un serveur.
  • .put(url, data=None,** kwargs) : modifie une source existante ou crée de nouvelles données sur le serveur.
  • .request(method, url,** kwargs) : envoie une requête avec une méthode spé­ci­fique à une URL donnée.

Exemple con­cer­nant la méthode .get()

La syntaxe de .get() est très claire, ce qui fait de Python requests une bi­blio­thèque très pratique. Il vous suffit de la méthode et de l’URL à laquelle vous voulez accéder. Celle-ci est indiquée entre guil­le­mets. Voici un exemple d’un code de ce type :

import requests
requests.get("https://exemple.com")
python

Le serveur cible vous envoie une réponse. Pour illustrer cela, vous pouvez aussi l’afficher dans une variable. Dans notre exemple, cela res­sem­ble­rait à ceci :

import requests
response = requests.get("https://exemple.com")
python

Consulter les codes de statut

La réponse la plus simple qui vous est donnée à une requête est un code de statut HTTP. Celui-ci vous indique si votre demande a abouti ou non. Le code de statut est composé de trois chiffres. Il existe de nom­breuses variantes qui vous informent de l’évolution de votre demande. Les prin­ci­pales ca­té­go­ries sont les suivantes :

  • 1XX : contient des in­for­ma­tions com­plé­men­taires.
  • 2XX : atteste d’une requête réussie.
  • 3XX : vous informe d’une re­di­rec­tion de votre requête.
  • 4XX : signale une erreur côté client.
  • 5XX : notifie une erreur côté serveur.
Remarque

L’un des codes de statut les plus connus est « 200 – OK » (pour une requête réussie) et « 404 – Not Found » (si les données demandées n’ont pas été trouvées sur le serveur).

Après votre demande via Python requests, vous pouvez consulter le statut avec .status_code. Pour ce faire, utilisez le code suivant :

response.status_code
python

Si votre requête a abouti, vous recevrez le message suivant :

200
python

Le code suivant est utile pour une meilleure pré­sen­ta­tion :

if response.status_code == 200:
	print("La requête a abouti.")
elif response.status_code == 404:
	print("La requête n’a pas abouti.")
python

Consulter l’en-tête avec Python requests

L’en-tête d’une réponse HTTP contient de nom­breuses in­for­ma­tions utiles. Vous y trouverez entre autres le type de données envoyées, un délai de mise en cache et d’autres in­di­ca­tions. La bi­blio­thèque Python requests permet aussi d’afficher fa­ci­le­ment l’en-tête. Pour ce faire, exécutez d’abord la fonction .get(), puis .headers :

import requests
response = requests.get("https://exemple.com")
response.headers
python

En sortie, vous obtenez ainsi un objet qui contient les valeurs de l’en-tête. Vous pouvez aussi les consulter in­di­vi­duel­le­ment en spé­ci­fiant la commande. Si vous souhaitez, par exemple, en savoir plus sur le type de données, voici la bonne commande :

response.headers["content-type"]
python

Accéder à la charge utile

Le paquet de données envoyé entre le serveur et le client est également connu sous le nom de « charge utile » (payload). Il se trouve dans le corps de la réponse. response permet d’accéder aux in­for­ma­tions qui s’y trouvent. Pour obtenir une re­pré­sen­ta­tion en octets, l’ins­truc­tion suivante est indiquée :

import requests
response = requests.get("https://exemple.com")
response.content
type(response.content)
python

Si vous souhaitez convertir les in­for­ma­tions col­lec­tées en chaîne de ca­rac­tères (string), utilisez le code suivant :

response.text
type(response.text)
python

Python requests extrait l’encodage de l’en-tête. Vous pouvez également demander au système d’utiliser une autre méthode. Ce code est un exemple :

response.encoding = "utf-8"
response.text
python

Vérifier la pro­gres­sion

Lorsque vous envoyez une requête, celle-ci est préparée par Python requests afin d’éviter des erreurs. En ce faisant, l’en-tête est vérifiée, entre autres. Vous pouvez inspecter les détails de la requête envoyée à l’aide de la fonction .request. Pour cela, utilisez le code suivant :

import requests
response = requests.post("https://exemple.com", json={"key": "value"})
print(response.request.headers["content-type"])
print(response.request.url)
print(response.request.body)
python

Vous obtenez ainsi des in­for­ma­tions sur la charge utile, l’en-tête, l’URL et plus encore.

Vé­ri­fi­ca­tion d’au­then­ti­cité via le module Python requests

Le paramètre auth est utilisé dans Python requests pour envoyer une au­then­ti­fi­ca­tion au serveur. Celui-ci peut effectuer une vé­ri­fi­ca­tion d’au­then­ti­cité et contrôler, ainsi, avec qui il interagit réel­le­ment. Pour utiliser cette vé­ri­fi­ca­tion, appliquer un code comme celui-ci :

import requests
from requests.auth import HTTPBasicAuth
response = requests.get("https://votre_page.com/basic-auth/user/passwd", 
	auth=HTTPBasicAuth("user", "passwd"))
print(response.status_code)
print(response.request.headers["Authorization"])
python

Utiliser un cer­ti­fi­cat SSL

En principe, l’uti­li­sa­tion d’un cer­ti­fi­cat SSL est utile pour éviter la perte de données et les in­tru­sions in­dé­si­rables. Python requests propose cette option par défaut. Si vous souhaitez toutefois empêcher la vé­ri­fi­ca­tion mutuelle pour une requête, vous pouvez dé­sac­ti­ver SSL grâce au code suivant :

import requests
requests.get("https://exemple.com", verify=False)
python

Vous recevrez alors un message d’aver­tis­se­ment explicite.

Note

Dé­sac­ti­ver la vé­ri­fi­ca­tion SSL peut com­pro­mettre la sécurité de votre ap­pli­ca­tion en la rendant vul­né­rable face aux cy­be­rat­taques. Utilisez cette option uni­que­ment pour des tests ou dans des en­vi­ron­ne­ments de dé­ve­lop­pe­ment où la sécurité n’est pas critique.

Dé­clen­cher un timeout avec Python requests

Python requests permet entre autres de limiter le temps maximum pour une réponse. Par défaut, le client attend une réponse sans res­tric­tion. En l’absence de celle-ci, les demandes peuvent s’accumuler et les per­for­mances en pâtir. Le paramètre timeout permet d’éviter ce problème. Dans le code suivant, nous indiquons à Python requests d’in­ter­rompre la requête au bout de deux secondes :

requests.get("https://exemple.com", timeout=2)
python
Conseil

Déployez votre site Internet ou votre ap­pli­ca­tion di­rec­te­ment via GitHub : avec Deploy Now de IONOS, vous disposez de la solution optimale pour les ap­pli­ca­tions à page unique comme pour les sites Internet statiques. Choi­sis­sez le tarif le plus adapté à vos besoins et profitez d’une ins­tal­la­tion plus rapide, de workflows optimisés et d’une con­cep­tion sécurisée !

Aller au menu principal