Niv. 0 — Découverte : une mini-API « to-do »
Objectif : faire tourner un projet Symfony et exposer quelques routes JSON. Zéro base de données (données en mémoire) pour se concentrer sur le cœur HTTP.
📋 Cahier des charges
Contexte — Vous découvrez Symfony. On veut une petite API de tâches, sans persistance, pour maîtriser le trajet requête → réponse.
Périmètre inclus
- Un projet Symfony 7.4 (skeleton minimal) qui démarre.
GET /api/health→{ "status": "ok" }.GET /api/tasks→ liste de tâches (tableau en mémoire, statique).GET /api/tasks/{id}→ une tâche, ou 404 si absente.POST /api/tasks→ reçoit un JSON{ "title": "..." }, renvoie 201 (on peut ne rien persister).
Périmètre exclu — base de données, sécurité, front, validation avancée.
Livrables — un dépôt git avec le projet ; les routes répondent correctement.
Critères de réussite
-
symfony servedémarre sans erreur. - Les 4 routes renvoient les bons codes (200, 201, 404) et du JSON.
-
debug:routerliste les routes attendues.
🗺️ Endroits à visiter
| Besoin | Chapitre |
|---|---|
| Créer le projet | 3.3 |
| Servir en local | 3.1 |
| Routing & JSON | 4.2, 4.3 |
| Lire le corps JSON | 4.1 |
| 404 propre | 4.3 |
🧭 Étapes suggérées
symfony new todo-api --version="7.4.*"puissymfony serve -d.- Un
TaskControlleravec la route/api/health. - Un tableau de tâches en propriété/constante ; les routes
listetshow. showlèvecreateNotFoundException()si l’id n’existe pas.createlit le corps ($request->getContent()+json_decode) et renvoie 201.- Vérifiez avec
curl(ou l’onglet réseau) chaque code de réponse.
🎁 Bonus : ajoutez une route
GET /api/tasks?done=truequi filtre le tableau. (Vous manipulez la query string — 4.4.)
Projet suivant : Niv. 1 — Débutant.