Facile

Introduction — Séance 5

Les quatre premières séances vous ont permis de construire : une API REST Flask avec pagination et agrégation (séance 1), un dashboard Streamlit avec filtres et KPI (séance 2), des graphiques Plotly Express (séance 3), et des requêtes SQL analytiques (séance 4). Jusqu'ici, votre dashboard Streamlit importait directement le VentesRepository Python pour accéder aux données. Cette séance change la donne : vous allez consommer votre API via HTTP.

Contexte

Actuellement, votre dashboard Streamlit fonctionne ainsi :

python
from api.repository import VentesRepository

repo = VentesRepository("db/ventes.db")
data = repo.get_par_region(annee=2024)

Cette approche fonctionne, mais elle a des limites :

  • Couplage fort : le dashboard et l'API partagent le même code Python, le même processus, la même machine.
  • Pas de vrai test d'API : vous n'utilisez jamais réellement les endpoints HTTP que vous avez construits en séance 1.
  • Non représentatif du monde réel : en entreprise, les dashboards consomment des APIs distantes — pas des imports directs.

Cette séance remplace l'import direct par des appels HTTP.

Pourquoi maintenant ?

Les séances 1 à 4 ont volontairement utilisé l'import direct pour se concentrer sur Streamlit, Plotly et SQL sans ajouter la complexité réseau. Maintenant que vous maîtrisez ces outils, vous êtes prêts à ajouter la couche HTTP.

Objectifs de la séance

À la fin de cette séance, vous saurez :

  • Expliquer quand l'import direct est approprié et quand HTTP est nécessaire
  • Utiliser requests pour appeler une API REST depuis Python
  • Gérer les erreurs réseau et HTTP avec try/except et raise_for_status()
  • Comprendre CORS et configurer flask-cors
  • Sécuriser votre API avec une clé d'API (header X-API-Key)
  • Gérer les secrets avec st.secrets (Streamlit) et os.environ (Flask)
  • Structurer un client HTTP avec requests.Session

Prérequis

  • Séances 1 à 4 complétées : API Flask fonctionnelle, dashboard Streamlit, graphiques Plotly, requêtes SQL analytiques
  • API Flask en cours d'exécution : votre serveur Flask doit tourner sur http://localhost:5000 pendant toute la séance
  • Installation de requests : la bibliothèque n'est pas incluse par défaut
bash
pip install requests

API Flask requise

Avant de commencer, assurez-vous que votre API Flask est lancée et accessible. Testez avec :

bash
curl http://localhost:5000/api/v1/ventes/par-region

Si cette commande ne retourne pas de JSON, relancez votre serveur Flask avant de continuer.

Plan de la séance

PartieContenuDurée estimée
Pourquoi HTTP ?Couplage direct vs HTTP, architecture cible, cas d'usage15 min
La bibliothèque requestsInstallation, GET, Response, params, JSON vers DataFrame20 min
Gestion des erreursErreurs réseau vs HTTP, exceptions, pattern api_get, st.spinner25 min
CORSCORS expliqué, flask-cors, quand ça s'applique10 min
Sécuriser l'APIClé d'API, @require_api_key, st.secrets, os.environ15 min
Client HTTP structuréVentesAPIClient, requests.Session, cache_resource, comparaison20 min
ExercicesMise en pratique (4 parties progressives)45 min
QuizValidation des acquis10 min
ConclusionRécapitulatif, checklist et architecture finale5 min

Approche pédagogique

Chaque section part d'un problème concret, puis fournit la solution avec du code fonctionnel. À la fin de la séance, votre dashboard Streamlit sera connecté à l'API Flask via HTTP, avec gestion d'erreurs et authentification.