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 l'attestation finale.

9 000 XOF / 13,72 € / 14,95 $

Débloquez les 94 leçons restantes de ce module

Pour vous communiquer où envoyer le paiement.

Moyen de paiement souhaité

Nous vous contactons pour le paiement — activé dès réception.