Partie 4 — HTTP, Kernel, Routing, Controllers
Public : BookLab tourne (Partie 3), vous avez le langage (Partie 2) et la carte (Partie 1). On ouvre maintenant la première case du schéma : comment Symfony transforme concrètement une requête en réponse. Objectif de la partie : maîtriser le cœur HTTP de Symfony — le pipeline du
HttpKernel, le routing par attributs, l’écriture de contrôleurs, la résolution d’arguments (dont#[MapRequestPayload]et#[MapEntity]), les sessions, et la création de commandes console.
Ce que vous saurez faire à la fin de cette partie
- Expliquer précisément le trajet
Request → Responseet les événements du noyau. - Déclarer des routes riches par attribut (paramètres, contraintes, méthodes, priorités) et générer des URLs.
- Écrire des contrôleurs propres qui renvoient HTML ou JSON, redirigent, gèrent les erreurs.
- Injecter automatiquement des objets dans vos contrôleurs via les value resolvers (entité depuis l’URL, DTO validé depuis le corps JSON, paramètres de requête).
- Utiliser sessions et messages flash.
- Créer des commandes console (
bin/console) pour les tâches et l’automatisation.
Le fil rouge dans cette partie
On ajoute à BookLab de vraies routes et contrôleurs (santé, endpoints publics), on met en place la résolution d’un DTO validé depuis une requête JSON (le futur point d’entrée « créer une réservation »), et une commande console utilitaire.
Chapitres de cette partie
- Front controller & HttpKernel — le pipeline en profondeur, les événements, la gestion des exceptions.
- Routing par attributs — paramètres, contraintes, méthodes, priorités, préfixes, génération d’URLs.
- Contrôleurs & réponses —
AbstractController,Response/JsonResponse/RedirectResponse, codes HTTP, erreurs. - Value resolvers —
#[MapEntity],#[MapRequestPayload],#[MapQueryParameter]: de la requête aux objets typés. - Sessions & flash — état entre requêtes, messages flash, cookies.
- Commandes console — créer des commandes
make:command, arguments/options, sortie stylée.
Prochain chapitre : 4.1 — Front controller & HttpKernel.