Skip to Content

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 serve démarre sans erreur.
  • Les 4 routes renvoient les bons codes (200, 201, 404) et du JSON.
  • debug:router liste les routes attendues.

🗺️ Endroits à visiter

BesoinChapitre
Créer le projet3.3
Servir en local3.1
Routing & JSON4.2, 4.3
Lire le corps JSON4.1
404 propre4.3

🧭 Étapes suggérées

  1. symfony new todo-api --version="7.4.*" puis symfony serve -d.
  2. Un TaskController avec la route /api/health.
  3. Un tableau de tâches en propriété/constante ; les routes list et show.
  4. show lève createNotFoundException() si l’id n’existe pas.
  5. create lit le corps ($request->getContent() + json_decode) et renvoie 201.
  6. Vérifiez avec curl (ou l’onglet réseau) chaque code de réponse.

🎁 Bonus : ajoutez une route GET /api/tasks?done=true qui filtre le tableau. (Vous manipulez la query string — 4.4.)


Projet suivant : Niv. 1 — Débutant.