Introduction — Séance 1
Ce cours, R5C4 — Programmation au format web des données décisionnelles, porte sur la conception d'APIs orientées données. Cette première séance couvre HTTP, la pagination, le filtrage, l'agrégation et l'export CSV.
Contexte du cours
Ce module s'adresse aux étudiants de 3e année BUT Informatique, parcours données et analytique. L'objectif : savoir exposer de la donnée via des APIs web pour alimenter des tableaux de bord, des outils de BI ou des applications d'analyse.
Données décisionnelles ?
Les données décisionnelles (ou data analytics) servent à prendre des décisions. Contrairement à une application CRUD classique qui gère des formulaires, ici l'enjeu est de servir des volumes importants de données, souvent agrégées et filtrées, dans des formats exploitables (JSON, CSV).
Les APIs construites dans ce module servent à :
- Alimenter un dashboard en données (chiffre d'affaires par région, évolution mensuelle)
- Permettre l'export de jeux de données filtrés vers Excel ou des outils BI
- Fournir des indicateurs agrégés (totaux, moyennes, comptages) via des endpoints dédiés
- Gérer la pagination de grands volumes de données (des milliers de lignes)
Objectifs de la séance
Objectifs
À la fin de cette séance, vous serez capable de :
- Expliquer le fonctionnement du protocole HTTP et les principes REST
- Concevoir les routes d'une API orientée données
- Structurer une application Flask (Blueprint, Controller, Repository)
- Implémenter la pagination et le filtrage sur un endpoint
- Créer un endpoint d'agrégation (totaux, moyennes, regroupements)
- Exporter des données en JSON et CSV depuis un même endpoint
Différence avec R5A5
R5C4 adopte une approche différente de R5A5 (Développement Avancé) :
| Aspect | R5A5 (Génie logiciel) | R5C4 (Données) |
|---|---|---|
| Architecture | Clean Architecture, Domain, Use Cases | Blueprint + Controller + Repository |
| Focus | Patterns logiciels, maintenabilité | Pagination, filtrage, agrégation, export |
| Données | CRUD classique | Grands volumes, analytics, BI |
| Complexité | Architecture en couches | Architecture légère, requêtes SQL |
Prérequis
- Python : syntaxe de base (fonctions, classes, dictionnaires), vu en 2e année
- Notions de backend : avoir déjà vu Flask ou un framework similaire
- Bases du web : requête HTTP, code de statut, URL
Pas de panique
Si vos souvenirs de Flask sont flous, cette séance reprend les bases nécessaires. Les exemples sont commentés et progressifs.
Technologies utilisées
Les exemples utilisent Python avec Flask et SQLite :
- Flask est léger et explicite — on voit ce qui se passe
- SQLite ne nécessite aucune installation — un fichier suffit
- Les concepts se transfèrent vers Django, FastAPI ou tout autre framework
Plan de la séance
| Partie | Contenu | Durée estimée |
|---|---|---|
| HTTP & REST | Rappels sur le protocole HTTP et les principes REST | 15 min |
| Conception d'API | Nommage, URI, versioning, CRUD | 15 min |
| Architecture Flask | Blueprint, Controller, Repository | 20 min |
| Pagination & Filtrage | Offset, limit, filtres multiples, tri | 25 min |
| Agrégation | Endpoints de statistiques, GROUP BY, pandas | 20 min |
| Formats & Export | JSON, CSV, négociation de contenu | 10 min |
| Exercices | Mise en pratique | 30 min |
| Quiz | Validation des acquis | 10 min |
Approche pédagogique
Chaque concept est illustré par du code Flask fonctionnel, réutilisable dans les exercices et les séances suivantes.