Cours HTTP et API REST : comprendre le web et concevoir des API
HTTP et API REST est un cours de niveau intermédiaire de 6 leçons (environ 3 h 50), avec 18 exercices et 18 questions de quiz. Prérequis : JavaScript asynchrone (promesses, fetch, API). Les exercices s'exécutent dans le navigateur, sans installation.
- Back-end
- Intermédiaire
- 6 leçons
- 3 h 50
- 18 exercices
- Exercices exécutés dans le navigateur
Le cours en bref
Ce cours explique le fonctionnement du protocole HTTP et les bonnes pratiques de conception des API REST, côté client comme côté serveur. Vous apprendrez à choisir méthodes et codes de statut, à concevoir des URL et une pagination, à valider des données JSON, à renvoyer des erreurs standardisées, à maîtriser cache, CORS et authentification, puis à assembler un routeur d'API minimal. Tous les exercices sont exécutés en JavaScript avec les objets standard URL, Request et Response, sans serveur ni réseau.
Ce que tu sauras faire
- Lire et construire des requêtes et réponses HTTP, et manipuler les URL de façon sûre
- Choisir la méthode et le code de statut adaptés, et appliquer les règles d'idempotence et de réessai
- Concevoir une API REST cohérente avec ressources, filtrage, tri et pagination
- Valider des payloads JSON et renvoyer des erreurs au format Problem Details
- Configurer le cache (Cache-Control, ETag), CORS et l'authentification par jeton ou cookie
- Implémenter et tester un routeur d'API minimal sans lancer de serveur
Programme des 6 leçons
- Décrire l'échange requête/réponse et la structure d'un message HTTP
- Décomposer une URL (schéma, hôte, port, chemin, paramètres, fragment)
- Manipuler URL et URLSearchParams en JavaScript
- 02
Méthodes et codes de statut
- Choisir la bonne méthode HTTP selon l'intention
- Expliquer sûreté et idempotence et leurs conséquences (réessais, cache)
- Choisir et interpréter les codes de statut courants
- 03
Concevoir une API REST : ressources, URL et pagination
- Modéliser une API autour de ressources et de collections
- Concevoir des URL cohérentes et choisir méthodes et statuts
- Mettre en place filtrage, tri et pagination
- 04
Corps JSON, validation et format des erreurs
- Envoyer et lire des corps JSON avec les bons en-têtes
- Valider un payload et répondre avec le bon statut
- Renvoyer des erreurs structurées au format Problem Details
Corps JSON et Content-TypeValidation des donnéesErreurs structurées (Problem Details)
- 05
En-têtes essentiels : cache, CORS et authentification
- Contrôler la mise en cache avec Cache-Control, ETag et les requêtes conditionnelles
- Expliquer et configurer CORS, y compris les requêtes de prévérification
- Transmettre une authentification par jeton Bearer ou par cookie sécurisé
- 06
Assembler un routeur d'API minimal
- Associer méthodes et chemins paramétrés à des gestionnaires
- Produire automatiquement 404 et 405 avec l'en-tête Allow
- Assembler un mini-service CRUD testable avec les objets standard Request et Response
Projet final
API de gestion de réservations, testée sans serveur
Concevez et implémentez en JavaScript l'API d'un service de réservation de salles. Rédigez d'abord le contrat (ressources, URL, méthodes, codes de statut, format des erreurs), puis implémentez-le avec un routeur de type (Request) => Response : création, consultation, modification et annulation des réservations, liste filtrée et paginée, validation des payloads, erreurs Problem Details, ETag sur la liste des salles, en-têtes CORS pour l'application front et authentification par jeton Bearer. L'ensemble est couvert par des tests node:assert qui construisent des Request sans réseau.
Livrables
- Le contrat de l'API (tableau des routes ou spécification OpenAPI) avec exemples de requêtes et réponses
- Le code du routeur, des middlewares (authentification, CORS, journalisation) et des gestionnaires
- Un module de validation et un générateur d'erreurs application/problem+json
- La pagination de la liste des réservations avec liens suivant/précédent
- La gestion des conflits de créneaux avec 409 et des requêtes conditionnelles avec ETag/304
- Une suite de tests couvrant succès, 401, 403, 404, 405, 409, 415, 422 et 304
Critères d'évaluation
- URL orientées ressources et méthodes conformes à leur sémantique
- Codes de statut exacts et en-têtes associés (Location, Allow, WWW-Authenticate, ETag)
- Validation stricte des entrées sans affectation de masse
- Erreurs homogènes, utiles et sans fuite d'information
- Politique CORS et authentification correctes
- Tests complets et lisibles, exécutables sans serveur
Questions fréquentes
Quelle est la différence entre HTTP et une API REST ?
HTTP est le protocole qui transporte les requêtes et les réponses sur le web. REST est un style d'architecture qui utilise HTTP de façon cohérente : des ressources identifiées par des URL, manipulées avec les méthodes standard et des codes de statut explicites.
Ce cours est-il utile pour un data scientist ?
Oui. Les données proviennent souvent d'API et les modèles sont souvent exposés via une API. Savoir construire des requêtes, gérer pagination, authentification et erreurs, et servir une prédiction en JSON fait partie du métier.
Faut-il savoir programmer un serveur pour suivre ce cours ?
Non. Il suffit de connaître JavaScript et l'asynchrone (promesses, fetch). Les exercices testent la logique avec les objets standard Request et Response, sans installer ni lancer de serveur. Les cours suivants du parcours appliquent ces notions à un framework back-end.
Pourquoi ai-je des erreurs CORS dans la console de mon navigateur ?
Le navigateur bloque la lecture d'une réponse provenant d'une autre origine si le serveur ne l'autorise pas avec les en-têtes CORS appropriés. La leçon sur les en-têtes explique comment configurer Access-Control-Allow-Origin et les requêtes de prévérification.
Ce cours, raconté pour ton métier
Dis ce que tu veux savoir faire : « HTTP et API REST » prend sa place dans ton parcours, avec des exemples de ton secteur. Les notions restent celles du cours.