La tournée du jour

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

Notions abordées : StructTag JSONQuery stringfor rangeappend

Place aux livraisons. Le neveu de Margot a écrit LivraisonController : une struct Livraison, la tournée du jour en mémoire, et une route GET /livraisons qui la renvoie en entier. Mais un coursier ne roule que dans son quartier, et l'application voudrait ne recevoir que ses livraisons.

Votre mission

  1. Lisez app/http/controllers/livraison_controller.go : la struct Livraison, ses tags JSON, et la slice livraisons.
  2. Dans Index, lisez le paramètre quartier de la query string : GET /livraisons?quartier=croix-rousse.
  3. Sans quartier, rien ne change : toute la tournée. Avec un quartier, ne renvoyez que ses livraisons.
  4. Un quartier sans livraison, comme fourviere, répond une liste vide [].

Rappel

Une struct regroupe des champs nommés et typés, comme une petite classe sans méthode. Le texte entre accents graves après chaque champ est un tag : `json:"client"` dit au paquet encoding/json d'écrire le champ Client sous la clé client. Sans tag, la clé serait Client. Un champ qui commence par une majuscule est exporté, visible hors du paquet ; en minuscule, il resterait privé et encoding/json l'ignorerait.

for _, livraison := range livraisons parcourt une slice, comme foreach ($livraisons as $livraison). Le if s'écrit sans parenthèses, et ses accolades sont obligatoires : if livraison.Quartier == quartier { … }. append ajoute un élément et renvoie la slice agrandie : il faut toujours récupérer son résultat.

Le piège classique : une slice jamais initialisée vaut nil, et nil s'écrit null en JSON. L'application attend une liste, même vide.