Les aventuriers adorent la carte sur leur parchemin. Maintenant, ils veulent savoir ce que les autres pensent d'un plat avant de le commander (Gimli ne jure que par ça).
Votre mission
Ajoutez GET /api/plats/{slug} : la fiche d'un plat, qui reprend les informations de la carte et ajoute :
avis: les avis du plat, du plus récent au plus ancien. Chaque avis publieauteur,note,messageetcreeLe, cette dernière au format2026-09-11;noteMoyenne: la moyenne des notes, arrondie au dixième, ounulltant que personne n'a donné son avis.
La carte (GET /api/plats) doit rester légère : ni avis ni note moyenne.
{ "slug": "ragout-du-nain", "nom": "Ragoût du nain grincheux", "prix": 12.5, "…": "…", "avis": [ { "auteur": "Legolas", "note": 2, "message": "Un peu lourd pour un elfe.", "creeLe": "2026-09-11" } ], "noteMoyenne": 3.5 }
Enfin, un plat inconnu doit donner une 404 en JSON. Essayez /api/plats/licorne-grillee dans l'aperçu : c'est une page HTML ! Le parchemin, lui, n'y comprendrait rien.
À savoir
- Plusieurs groupes à la fois :
context: ['groups' => ['carte', 'plat']]. #[Groups]se pose aussi sur une méthode : une valeur calculée devient un champ du JSON.#[Context]règle la sérialisation d'une seule propriété, par exemple le format d'une date.- Le format d'une route (
format: 'json') dit à Symfony de répondre en JSON, erreurs comprises, même quand le client ne précise rien. Les erreurs suivent alors le format Problem Details (RFC 9457) :type,title,status,detail.