Bastien a voulu tester l'application : il a commandé une course pour « la Lune », sans nom de client. Elle est partie dans la tournée, et Yanis a cherché la Lune une bonne heure.
Votre mission
- Au début de
Store, validez la requête :clientest obligatoire et fait au moins 2 caractères ;quartierest obligatoire et doit êtrecroix-rousse,presqu-ile,guillotiereouconfluence. - Une commande invalide répond 422 avec
{"erreurs": …}, les erreurs rangées par champ, et n'entre pas dans la tournée. - Une commande correcte passe comme avant.
Rappel
ctx.Request().Validate(règles) reprend la syntaxe de Laravel : required, in:a,b,c, email… avec quelques noms qui changent : la longueur d'une chaîne se vérifie avec min_len:2, pas min:2, réservé aux nombres. Les messages d'erreur sont en anglais par défaut. Validate renvoie deux valeurs : le validateur et une erreur. C'est la façon de Go de signaler un problème, sans exception : on vérifie err juste après l'appel, avec if err != nil. Ici, err ne dit pas que la commande est invalide, mais que la validation n'a pas pu se faire (une règle mal écrite, par exemple).
Le verdict est dans le validateur : validator.Fails(), puis validator.Errors().All(), les messages par champ et par règle. Contrairement à Laravel, Goravel ne répond pas tout seul : c'est à vous de renvoyer le 422.