PaliSkill
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