Un contrôleur pour les coursiers

Exercice 3 sur 4 du chapitre 1 · 100 XP · 2 objectifs vérifiés par des tests

Notions abordées : ContrôleurStructMéthodeSlice

routes/web.go grossit, et Margot a déjà d'autres idées. Comme dans Laravel, le code des routes ira dans un contrôleur. Le neveu de Margot, qui « fait du Go », a commencé CoursierController et y a rangé la liste des coursiers.

Votre mission

  1. Dans app/http/controllers/coursier_controller.go, ajoutez une méthode Index qui répond {"coursiers": [...]} avec la liste coursiers du fichier.
  2. Ajoutez une méthode Show, qui reprend ce que fait la route /coursiers/{prenom}.
  3. Dans routes/web.go, créez le contrôleur avec controllers.NewCoursierController(), branchez GET /coursiers sur Index et GET /coursiers/{prenom} sur Show, et retirez l'ancienne fonction.

Rappel

Go n'a pas de classes : un contrôleur est une struct, ici vide (type CoursierController struct{}), à laquelle on attache des méthodes. Le (r *CoursierController) placé avant le nom de la méthode est son receveur, l'équivalent de $this. Le * et le & désignent l'adresse de la struct plutôt qu'une copie : retenez juste la forme, on y revient au chapitre 4. NewCoursierController() est un simple constructeur, une convention de Go plutôt qu'un mot-clé.

coursiers.Index, sans parenthèses, est la méthode elle-même, que la route appellera à chaque requête : c'est le [CoursierController::class, 'index'] de Laravel.

[]string{"Margot", …} est une slice de chaînes, la liste de Go. Passée à Json, elle devient un tableau JSON.