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
- Lisez
app/http/controllers/livraison_controller.go: la structLivraison, ses tags JSON, et la slicelivraisons. - Dans
Index, lisez le paramètrequartierde la query string :GET /livraisons?quartier=croix-rousse. - Sans quartier, rien ne change : toute la tournée. Avec un quartier, ne renvoyez que ses livraisons.
- 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.