Titre RNCP Niveau 7

Maîtrisez pipelines, cloud & IA pour devenir Data Engineer opérationnel.

Devenez Data Engineer

DataScientist.fr

Formations

L'équipeLa plateforme
Offre entreprises

🇫🇷

Guide de la bibliothèque requests - Tutoriel Python interactif
Python
Web Development

Guide de la bibliothèque requests - Tutoriel Python interactif

Romain DE LA SOUCHÈRE

Lead Developer, Expert Cloud et DevOps

Publié le 7 janvier 2025 · 17 min de lecture

Dans le monde du développement web, l'interaction avec les API est cruciale pour échanger des données entre différentes plateformes. Pour les développeurs Python, la bibliothèque "requests" s'impose comme un outil incontournable pour effectuer des requêtes HTTP de manière simple et efficace. Que vous soyez débutant ou expert, maîtriser "requests" vous permettra de naviguer avec aisance à travers les complexités des communications web, en exploitant toutes les possibilités offertes par ce module puissant et flexible. Découvrez comment optimiser vos échanges de données et garantir la sécurité de vos transactions en utilisant "requests".

Introduction à la bibliothèque requests

La bibliothèque requests est une des bibliothèques les plus populaires en Python pour effectuer des requêtes HTTP de manière simple et efficace. Que vous soyez débutant ou développeur expérimenté, requests offre une interface intuitive pour interagir avec des APIs, télécharger des fichiers, ou encore envoyer des données à un serveur. Dans cette section, nous allons explorer les fonctionnalités de base de cette bibliothèque et comment elle peut faciliter vos tâches de développement web.

Installation de la bibliothèque

Avant de commencer à utiliser requests, vous devez l'installer. Cela peut être fait facilement avec pip :
shell
Une fois installée, vous êtes prêt à l'importer dans vos scripts Python et à l'utiliser pour envoyer des requêtes HTTP.

Envoyer une requête GET

La requête GET est l'une des opérations HTTP les plus courantes. Elle est utilisée pour récupérer des données d'une ressource spécifique. Avec requests, cela se fait en une seule ligne de code :
python
La variable response contient la réponse du serveur, qui peut être manipulée pour extraire des informations utiles.

Manipulation de la réponse

Une fois que vous avez la réponse, requests facilite l'accès aux données. Voici comment vous pouvez accéder au contenu de la réponse, ainsi qu'à d'autres attributs importants :
python
Pour les réponses JSON, requests offre une méthode pratique pour les convertir en objets Python :
python

Envoyer une requête POST

Pour envoyer des données à un serveur, vous utiliserez généralement une requête POST. La bibliothèque requests simplifie également cette opération :
python
Dans cet exemple, payload est un dictionnaire Python qui contient les données à envoyer au serveur.

Gestion des exceptions

Il est important de gérer les exceptions pour éviter que votre programme ne plante en cas de problème de connexion ou d'erreur serveur. requests lève des exceptions pour ces cas, que vous pouvez intercepter avec un bloc try-except :
python
Avec cette introduction, vous avez maintenant une compréhension de base de la bibliothèque requests et vous êtes prêt à l'explorer plus en profondeur pour répondre à vos besoins spécifiques en matière de requêtes HTTP.

La requête get

La requête GET est l'une des opérations les plus fondamentales du protocole HTTP, et avec la bibliothèque requests, elle devient particulièrement simple à mettre en œuvre. Dans cette section, nous approfondirons l'utilisation de la requête GET pour récupérer des données d'une API ou d'un site web.

Envoi d'une requête GET

L'envoi d'une requête GET avec requests est aussi simple que d'appeler la fonction get() avec l'URL souhaitée. Voici un exemple basique :
python
Dans cet exemple, response contient la réponse du serveur à la requête GET envoyée à l'URL indiquée.

Vérification du statut de la réponse

Après avoir effectué une requête GET, il est crucial de vérifier si la requête a été couronnée de succès. Cela se fait en vérifiant le code de statut HTTP :
python
Un code de statut de 200 indique que la requête a été traitée avec succès.

Extraction des données

Pour extraire les données de la réponse, requests offre plusieurs options en fonction du format des données retournées. Pour le texte brut :
python
Si la réponse est au format JSON, vous pouvez facilement la convertir en un objet Python :
python

Gestion des paramètres de requête

Souvent, vous aurez besoin de passer des paramètres à votre requête GET. requests simplifie cela avec le paramètre params :
python
Dans cet exemple, params est un dictionnaire qui spécifie les paramètres de requête à inclure dans l'URL.

Gestion des erreurs

Comme pour toute opération réseau, des erreurs peuvent survenir lors de l'envoi d'une requête GET. Vous pouvez les gérer avec un bloc try-except :
python
En maîtrisant ces concepts, vous serez bien équipé pour utiliser la requête GET efficacement avec la bibliothèque requests et interagir avec diverses APIs et services web.

La réponse

Une fois une requête envoyée avec succès en utilisant la bibliothèque requests, le serveur retourne une réponse que vous pouvez analyser et manipuler selon vos besoins. Cette section explore comment extraire et utiliser les informations contenues dans la réponse d'une requête HTTP.

Accéder aux en-têtes de la réponse

Les en-têtes HTTP contiennent des métadonnées importantes sur la réponse, comme le type de contenu ou la date. Vous pouvez accéder à ces informations à l'aide de l'attribut headers :
python
Pour extraire un en-tête spécifique, utilisez la syntaxe suivante :
python

Analyser le contenu de la réponse

Le contenu de la réponse est souvent le principal intérêt lorsque vous travaillez avec des requêtes HTTP. requests permet d'accéder facilement à ce contenu sous plusieurs formes :
  • Texte brut :
  • Binaire :
  • JSON : Si la réponse est au format JSON, vous pouvez la convertir directement en objet Python :

Vérification du code de statut

Le code de statut HTTP est essentiel pour comprendre le résultat de votre requête. Un code de 200 indique un succès, tandis que d'autres codes comme 404 ou 500 indiquent des erreurs. Vous pouvez accéder au code de statut ainsi :
python

Gestion des redirections

Les redirections HTTP sont courantes et requests les gère automatiquement. Vous pouvez désactiver cette fonctionnalité si nécessaire en utilisant le paramètre allow_redirects :
python

Temps de réponse

Dans des applications où la performance est cruciale, mesurer le temps de réponse peut être utile :
python
En comprenant ces aspects de la réponse HTTP, vous pouvez non seulement extraire les données nécessaires mais aussi optimiser vos requêtes pour mieux interagir avec les services web.

Paramètres de chaîne de requête

Les paramètres de chaîne de requête sont des éléments clés qui permettent de personnaliser les requêtes HTTP en incluant des données spécifiques directement dans l'URL. La bibliothèque requests simplifie l'ajout et la gestion de ces paramètres, ce qui est particulièrement utile lors de l'interaction avec des APIs qui nécessitent des entrées spécifiques.

Ajout de paramètres à une requête GET

Pour ajouter des paramètres de chaîne de requête, vous pouvez utiliser le paramètre params de la fonction get(). Ce paramètre accepte un dictionnaire Python où chaque paire clé-valeur représente un paramètre et sa valeur associée :
python
Dans cet exemple, l'URL finale envoyée sera https://api.example.com/search?query=python&page=2.

Encodage automatique des paramètres

Une des fonctionnalités puissantes de requests est l'encodage automatique des paramètres de chaîne de requête. Cela signifie que les caractères spéciaux et les espaces sont correctement encodés, ce qui évite les erreurs fréquentes liées à la construction manuelle des URLs :
python
Ici, l'espace entre "développement" et "web" sera encodé correctement pour l'inclusion dans l'URL.

Gestion des paramètres dynamiques

Les paramètres de chaîne de requête peuvent facilement être modifiés dynamiquement, ce qui est utile dans les applications où les utilisateurs peuvent entrer des critères de recherche ou des filtres :
python
Ce code montre comment un utilisateur peut interagir avec une API en modifiant dynamiquement les paramètres de la requête.

Vérification de l'URL finale

Pour vérifier l'URL finale qui est générée avec les paramètres, vous pouvez accéder à l'attribut url de l'objet response :
python
Cela est particulièrement utile pour le débogage et pour s'assurer que les paramètres sont correctement ajoutés.
Ces techniques permettent de tirer pleinement parti des paramètres de chaîne de requête, rendant vos applications plus flexibles et puissantes lorsqu'il s'agit d'interagir avec des services web.

Autres méthodes http

En plus de la requête GET, la bibliothèque requests prend en charge plusieurs autres méthodes HTTP essentielles pour interagir avec des APIs et des services web. Ces méthodes permettent de manipuler et de transférer des données de manière plus flexible.

La méthode POST

La méthode POST est principalement utilisée pour envoyer des données à un serveur. Avec requests, l'envoi d'une requête POST est simple et ne nécessite que quelques lignes de code. Voici comment vous pouvez envoyer des données sous forme de formulaire :
python
Les données sont envoyées dans le corps de la requête, ce qui est idéal pour les formulaires et les données sensibles.

La méthode PUT

La méthode PUT est utilisée pour mettre à jour les ressources existantes sur un serveur. Elle fonctionne de manière similaire à POST, mais est généralement utilisée lorsque vous souhaitez remplacer complètement une ressource :
python
Cette requête met à jour les informations de l'utilisateur spécifié.

La méthode DELETE

La méthode DELETE permet de supprimer une ressource sur un serveur. Avec requests, l'utilisation de cette méthode est aussi simple que les autres :
python
Cette requête tente de supprimer l'utilisateur avec l'ID 123.

La méthode HEAD

La méthode HEAD est similaire à GET, mais elle ne récupère que les en-têtes de la réponse, sans le corps. Cela est utile pour vérifier la disponibilité d'une ressource ou obtenir des métadonnées :
python

La méthode PATCH

La méthode PATCH est utilisée pour effectuer des mises à jour partielles d'une ressource. Contrairement à PUT, elle n'exige pas une mise à jour complète :
python
Chaque méthode HTTP offre des possibilités uniques pour interagir efficacement avec les services web, et la bibliothèque requests fournit une interface simple pour les implémenter dans vos applications Python.

Le corps du message

Le corps du message dans une requête HTTP est une composante essentielle, surtout lorsqu'il s'agit d'envoyer des données au serveur. La bibliothèque requests facilite l'envoi de différents types de contenu dans le corps de la requête, selon les besoins de votre application.

Envoyer des données de formulaire

Pour envoyer des données sous forme de formulaire, vous pouvez utiliser le paramètre data dans les méthodes POST ou PUT. Les données sont généralement envoyées sous forme de dictionnaire Python :
python
Dans cet exemple, les données du dictionnaire sont encodées en application/x-www-form-urlencoded, le format standard pour les formulaires web.

Envoyer des données JSON

Lorsque vous devez envoyer des données au format JSON, la bibliothèque requests offre une méthode pratique avec le paramètre json. Cela s'assure que les données sont correctement encodées en JSON avant d'être envoyées :
python
Cette approche est largement utilisée pour les APIs RESTful qui consomment du JSON.

Envoyer des fichiers

Envoyer des fichiers via une requête HTTP est une tâche courante, notamment lors du téléchargement de documents ou d'images. Avec requests, vous pouvez utiliser le paramètre files :
python
Ce code envoie le fichier document.pdf au serveur, utilisant le type de contenu multipart/form-data.

Personnalisation des en-têtes

Parfois, il est nécessaire de personnaliser les en-têtes HTTP pour spécifier le type de contenu ou d'autres métadonnées. Cela peut être fait en utilisant le paramètre headers :
python
Cette flexibilité permet de s'assurer que vos requêtes sont conformes aux spécifications de l'API que vous utilisez, garantissant ainsi une communication efficace avec le serveur.

Inspection des requêtes

L'inspection des requêtes est une étape cruciale pour le débogage et l'optimisation de vos interactions avec les serveurs web. La bibliothèque requests fournit plusieurs outils qui vous permettent d'examiner les détails des requêtes HTTP, ce qui aide à s'assurer que les requêtes sont correctement formées et que les réponses sont appropriées.

Examiner l'URL finale

Lors de la construction de requêtes avec des paramètres dynamiques ou de nombreux en-têtes, il est important de vérifier l'URL finale pour s'assurer qu'elle est correctement formée. Vous pouvez accéder à l'URL finale utilisée dans la requête via l'attribut url de l'objet Response :
python
Cela est particulièrement utile pour s'assurer que les paramètres de chaîne de requête sont correctement encodés et ajoutés.

Vérification des en-têtes de la requête

Les en-têtes de requête peuvent influencer la manière dont le serveur traite votre requête. Avec requests, vous pouvez inspecter ces en-têtes pour vous assurer qu'ils sont correctement configurés :
python
Cette inspection permet de vérifier que les en-têtes personnalisés, tels que les jetons d'authentification ou les types de contenu, sont inclus comme prévu.

Analyser les redirections

requests suit automatiquement les redirections, mais il peut être utile de voir quelles redirections ont été suivies pour diagnostiquer les problèmes de routage :
python
Chaque élément de response.history est un objet Response qui représente une redirection.

Temps de réponse

L'analyse du temps de réponse peut aider à identifier les goulots d'étranglement dans la communication réseau. requests fournit l'attribut elapsed pour mesurer le temps total de la requête :
python
Grâce à ces techniques d'inspection, vous pouvez optimiser vos requêtes HTTP pour une performance et une fiabilité accrues dans vos applications Python.

Authentification

L'authentification est un aspect crucial lorsqu'il s'agit d'accéder à des ressources protégées ou d'interagir avec des APIs sécurisées. La bibliothèque requests offre plusieurs méthodes d'authentification simples à implémenter, qui garantissent que vos requêtes sont autorisées à accéder aux ressources nécessaires.

Authentification de base

L'authentification de base est l'une des méthodes les plus simples et elle est souvent utilisée pour protéger des ressources avec un nom d'utilisateur et un mot de passe. Avec requests, vous pouvez facilement ajouter des informations d'authentification à vos requêtes :
python
Dans cet exemple, l'objet HTTPBasicAuth est utilisé pour inclure les informations d'authentification dans la requête.

Authentification par jeton

De nombreuses APIs modernes utilisent des jetons pour l'authentification, ce qui offre une sécurité accrue et une flexibilité. Les jetons sont généralement inclus dans les en-têtes de requête :
python
Le jeton d'authentification est ici ajouté à l'en-tête Authorization, en utilisant le schéma Bearer.

Authentification OAuth

OAuth est un protocole d'autorisation couramment utilisé pour accorder l'accès aux ressources sans partager les informations d'identification. Bien que requests ne gère pas OAuth nativement, des bibliothèques comme requests-oauthlib peuvent être utilisées pour simplifier ce processus :
python
Cette méthode est souvent utilisée par les plateformes qui nécessitent un niveau de sécurité plus élevé, comme Twitter.
Grâce à ces différentes méthodes d'authentification, requests permet de sécuriser facilement vos interactions avec des services web, garantissant que seules les requêtes autorisées peuvent accéder aux ressources protégées.

Vérification du certificat ssl

La vérification du certificat SSL est une pratique essentielle pour garantir la sécurité des communications entre votre application et un serveur web. La bibliothèque requests vérifie automatiquement les certificats SSL, mais vous pouvez aussi personnaliser ce comportement selon vos besoins.

Vérification par défaut

Par défaut, requests vérifie les certificats SSL pour s'assurer que le serveur auquel vous vous connectez est bien celui qu'il prétend être. Cela empêche les attaques de type "man-in-the-middle" qui pourraient intercepter vos données :
python
En cas de problème avec le certificat SSL, requests lèvera une exception SSLError.

Désactivation de la vérification SSL

Dans certains environnements de développement ou de test, vous pourriez être amené à désactiver temporairement la vérification SSL. Cela peut être fait en passant verify=False dans votre requête, bien que cela ne soit pas recommandé pour les environnements de production :
python
Notez que désactiver la vérification SSL expose votre application à des risques de sécurité. Il est préférable d'utiliser cette option avec prudence.

Utiliser un certificat SSL personnalisé

Si vous travaillez avec un serveur qui utilise un certificat SSL auto-signé ou un certificat non standard, requests vous permet de spécifier un chemin vers un fichier de certificat CA :
python
Cela permet à requests de vérifier le certificat du serveur en utilisant le certificat CA fourni.

Gestion des exceptions SSL

Lorsqu'une vérification SSL échoue, il est essentiel de gérer les exceptions pour éviter que votre application ne plante. Vous pouvez intercepter les erreurs SSL avec un bloc try-except :
python
En comprenant et en utilisant correctement la vérification du certificat SSL, vous pouvez renforcer la sécurité des communications réseau dans vos applications Python.

Performance

Optimiser la performance de vos requêtes HTTP peut avoir un impact significatif sur l'efficacité de votre application, surtout lorsque vous interagissez fréquemment avec des APIs ou des services web. La bibliothèque requests offre plusieurs techniques pour améliorer la performance de vos requêtes.

Réutilisation des connexions avec les sessions

L'utilisation de sessions est une méthode efficace pour réutiliser les connexions HTTP sous-jacentes, ce qui réduit le temps de latence des requêtes. Les sessions permettent de conserver des paramètres de configuration et des en-têtes entre plusieurs requêtes :
python
En utilisant une session, vous évitez de recréer une nouvelle connexion pour chaque requête, ce qui peut considérablement réduire le temps de réponse.

Activation de la compression

La compression des réponses HTTP peut réduire la quantité de données transférées, accélérant ainsi la transmission. requests gère automatiquement la compression gzip et deflate si le serveur la prend en charge :
python
En s'assurant que vos serveurs supportent la compression, vous pouvez améliorer les temps de chargement pour les utilisateurs finaux.

Gestion des délais d'attente

Configurer des délais d'attente appropriés peut éviter que vos requêtes ne restent bloquées indéfiniment en cas de problème de réseau. Vous pouvez spécifier des délais d'attente pour les connexions et les lectures :
python
Ici, 3.05 secondes est le délai d'attente pour établir une connexion et 27 secondes pour lire les données.

Utilisation de l'asynchronisme

Pour des applications nécessitant un haut degré de parallélisme, envisager des approches asynchrones peut être bénéfique. Bien que requests ne supporte pas nativement l'asynchronisme, des bibliothèques comme aiohttp peuvent être utilisées pour réaliser des requêtes non bloquantes :
python
En optimisant l'utilisation de requests grâce à ces techniques, vous pouvez améliorer sensiblement la performance et la réactivité de vos applications web en Python.

Conclusion

En conclusion, la bibliothèque requests se révèle être un outil puissant et flexible pour les développeurs Python souhaitant effectuer des opérations HTTP. Que vous soyez en train de construire une application complexe ou de simplement interagir avec une API, requests offre une interface intuitive qui simplifie grandement ces interactions.

Flexibilité et simplicité

L'un des principaux atouts de requests est sa simplicité d'utilisation. Grâce à une syntaxe claire et concise, même les opérations HTTP avancées deviennent accessibles. Qu'il s'agisse d'envoyer des requêtes GET ou POST, de gérer l'authentification, ou de manipuler les en-têtes et le corps des messages, requests permet de réaliser ces tâches avec un minimum de code.

Sécurité et fiabilité

La sécurité est un aspect crucial pour toute application web, et requests facilite la gestion des vérifications SSL et des authentifications. En supportant différents mécanismes d'authentification et en permettant une gestion fine des certificats SSL, requests garantit que vos communications sont sécurisées et fiables. De plus, la gestion des exceptions et des délais d'attente permet d'améliorer la robustesse de vos applications.

Performance et optimisation

Optimiser la performance de vos requêtes HTTP est essentiel pour offrir une bonne expérience utilisateur. L'utilisation de sessions pour réutiliser les connexions, l'activation de la compression des données, et la gestion appropriée des délais d'attente sont autant de techniques qui peuvent être facilement implémentées grâce à requests. Pour les applications nécessitant une gestion asynchrone des requêtes, l'intégration avec des bibliothèques comme aiohttp offre une flexibilité supplémentaire.

Un écosystème riche

Enfin, requests bénéficie d'un vaste écosystème et d'une communauté active, ce qui signifie que vous pouvez facilement trouver des extensions et des ressources pour répondre à des besoins spécifiques. Que ce soit pour gérer des cas d'utilisation avancés ou pour résoudre des problèmes, la documentation abondante et les nombreuses contributions de la communauté font de requests un choix judicieux pour les développeurs Python.
Ainsi, en maîtrisant la bibliothèque requests, vous êtes bien équipé pour créer des applications web robustes, sécurisées et performantes, tout en bénéficiant d'une expérience de développement agréable et simplifiée.

Partager avec

💙 Merci d'avoir parcouru l'article jusqu'à la fin !

Romain DE LA SOUCHÈRE

Romain DE LA SOUCHÈRE - Lead Developer, Expert Cloud et DevOps

Ingénieur de formation avec plus de 11 ans d'expérience dans le développement back-end et le data engineering. Expert dans l’industrialisation des projets data dans le cloud.

» En savoir plus

Formations associés

Toutes nos formations

Préparez la certification PL‑300
Préparez la certification PL‑300
24 heures
Débutant
Garantie
Préparez la certification AZ-900
Préparez la certification AZ-900
10 heures
Débutant
Garantie
Préparez la certification DP‑700
Préparez la certification DP‑700
24 heures
Débutant
Garantie
Préparez la certification DP‑900
Préparez la certification DP‑900
10 heures
Débutant
Garantie

DataScientist.fr

By AXI Technologies

128 Rue de la Boétie,
75008, Paris, France

bonjour@datascientist.fr

+33 1 70 39 08 31

+33 6 86 99 34 78

© 2026 DataScientist.fr - AXI Technologies - Tous droits réservés