TW3 — Technologies du Web 3

Exercice : une petite API Express

Construire une API de gestion de tâches avec routeur, validation, middleware d'authentification et gestion des erreurs.

Place à la pratique : vous allez assembler tout ce que le chapitre a présenté dans une API de gestion de tâches, stockée en mémoire.

Exercice

Créez une API REST /api/taches avec express.Router, validation des entrées, middleware d'authentification, 404 attrape-tout et middleware d'erreur à quatre arguments.

📋 Cahier des charges

Mise en place

Initialisez le projet, installez express et dotenv, créez src/app.js et src/server.js. Le port vient de process.env.PORT.

Routeur des tâches

Dans src/routes/taches.routes.js, montez sur /api/taches :

  • GET / : liste, filtrable par ?faite=true ;
  • GET /:id : une tâche, ou 404 ;
  • POST / : création, réponse 201 ;
  • PATCH /:id : bascule le statut ;
  • DELETE /:id : suppression, réponse 204 (protégée par authentification).

Validation

Un POST sans titre (ou avec un titre vide) doit renvoyer 400 avec un message clair.

Authentification

Un middleware authentifier exige un en-tête Authorization: Bearer abc123 et répond 401 sinon.

Erreurs

Un middleware 404 attrape-tout, puis un middleware d'erreur à quatre arguments qui formate toutes les réponses d'erreur en JSON.

🧪 Tests attendus

curl http://localhost:3000/api/taches
curl -X POST http://localhost:3000/api/taches -H "Content-Type: application/json" -d '{"titre":"Réviser Express"}'
curl -X DELETE http://localhost:3000/api/taches/1
curl -X DELETE http://localhost:3000/api/taches/1 -H "Authorization: Bearer abc123"
curl http://localhost:3000/inconnu

Code à compléter (onglets)

javascript

L'éditeur propose un onglet par fichier attendu (nommés à l'avance). Complétez-les dans l'ordre du cahier des charges. La validation automatique ne porte que sur src/routes/taches.helpers.js (les fonctions pures testables sans serveur) ; le reste se vérifie en lançant l'API (npm run dev) et en envoyant les requêtes du cahier des charges.

🧱 Consigne — structure attendue du projet

Le composant interactif ci-dessus contient un onglet par fichier à compléter. Utilisez cette structure pour organiser votre projet :

app.js
server.js
auth.js
erreurs.js
taches.helpers.js
taches.routes.js

Chaque fichier doit conserver une responsabilité claire : le routeur déclare les endpoints, les helpers portent les fonctions pures, les middlewares traitent l'authentification et les erreurs, et app.js assemble l'application.

Quiz du chapitre

5 questions
0 / 5 répondue0%
  1. 1Dans le routeur des tâches, pourquoi convertir req.params.id avec Number avant la comparaison ?
  2. 2Quelle réponse doit produire un POST /api/taches dont le corps ne contient pas de titre ?
  3. 3Le middleware authentifier est passé en deuxième argument de router.delete. Quel est l'effet ?
  4. 4Pourquoi la suppression réussie répond-elle 204 sans corps JSON ?
  5. 5Quel avantage à créer les erreurs avec une propriété status puis à les passer à next() ?
Répondez à toutes les questions pour valider.

Express

Terminez le quiz du chapitre pour le marquer comme complété.

Tableau de bord

On this page