← Python avancé
Leçon 9 / 9 — Chapitre 7: Requêtes HTTP et APIs
Cas pratique : récupérer et traiter des données d'une API
Cette dernière leçon combine requests.get(), raise_for_status(), le traitement d'une liste de dictionnaires reçue en JSON, et une gestion d'erreurs complète.
import requests
def recuperer_produits_disponibles(url):
try:
reponse = requests.get(url, timeout=5)
reponse.raise_for_status()
except requests.exceptions.Timeout:
print("Le serveur n'a pas repondu a temps")
return []
except requests.exceptions.HTTPError as e:
print("Erreur HTTP :", e)
return []
produits = reponse.json()
return [p for p in produits if p["stock"] > 0]
# suppose : le serveur repond 200 avec
# [{"nom": "riz", "prix": 5, "stock": 20},
# {"nom": "huile", "prix": 8, "stock": 0},
# {"nom": "sucre", "prix": 3, "stock": 15}]
disponibles = recuperer_produits_disponibles("https://api.exemple.com/produits")
for p in disponibles:
print(f"{p['nom']} : {p['prix']} $")
Ce que fait chaque partie :
try/except(vu dans Python Intermédiaire) intercepte séparément un délai dépassé (Timeout, vu dans ce chapitre) et une erreur HTTP (HTTPError, vu dans ce chapitre), avec un message adapté à chaque cas.reponse.raise_for_status()(vu dans ce chapitre) lève une exception si le statut indique une erreur, avant même de tenter de lire.json().- La compréhension finale (vue dans Python Intermédiaire) filtre les produits en stock, exactement comme pour l'inventaire du huitième chapitre de Python Intermédiaire.
Avec la réponse donnée (statut 200), cette fonction renvoie deux produits (riz et sucre, huile étant exclue avec un stock à 0), affichés ensuite riz : 5 $ puis sucre : 3 $.
À vous de jouer : modifiez la fonction pour qu'elle affiche aussi le nombre total de produits disponibles trouvés, avec len().
🔒
Continuez ce module
Débloquez les leçons restantes ainsi que la certification finale.
2 500 XOF / 3,81 € / 4,15 $
Débloquez les 87 leçons restantes de ce module
Votre paiement est vérifié avant l'activation de l'accès