Maison >développement back-end >Golang >Comment personnaliser les messages d'erreur de validation dans Go à l'aide des balises Struct ?
Personnalisation des messages d'erreur de validation avec des balises Struct
Dans le développement Web Go utilisant Gin, la validation de structure joue un rôle crucial pour garantir l'intégrité des données avant la persistance . Les messages d'erreur par défaut fournis par la bibliothèque de validation sous-jacente peuvent cependant être verbeux et moins conviviaux. Cet article explique comment renvoyer des messages d'erreur personnalisés basés sur des balises struct, permettant aux développeurs de fournir des commentaires plus significatifs et plus exploitables aux utilisateurs.
Comprendre Validator.ValidationErrors
Gin exploite la bibliothèque github.com/go-playground/validator/v10 pour validation. Lorsque la validation échoue, une erreur de type validator.ValidationErrors est renvoyée. Ce type d'erreur contient une tranche d'instances validator.FieldError, chacune représentant un champ non valide.
Personnalisation des messages d'erreur
Pour personnaliser les messages d'erreur, vous pouvez déballer le validateur. ValidationErrors à l’aide du package d’erreurs, accédez à validator.FieldError et créez un message d’erreur personnalisé basé sur la balise du champ. L'attribut tag dans les champs de structure permet aux développeurs de spécifier des règles de validation personnalisées et des messages d'erreur.
Par exemple, considérons l'extrait de code suivant :
type ApiError struct { Field string Msg string } func msgForTag(tag string) string { switch tag { case "required": return "This field is required" case "email": return "Invalid email" } return "" }
Ce code définit une structure ApiError et une assistance. fonction msgForTag qui mappe les balises à des messages d'erreur personnalisés. En les utilisant, vous pouvez implémenter le gestionnaire suivant :
var u User err := c.BindQuery(&u); if err != nil { var ve validator.ValidationErrors if errors.As(err, &ve) { out := make([]ApiError, len(ve)) for i, fe := range ve { out[i] = ApiError{fe.Field(), msgForTag(fe.Tag())} } c.JSON(http.StatusBadRequest, gin.H{"errors": out}) } return }
Dans ce gestionnaire, l'erreur validator.ValidationErrors est déballée et chaque validator.FieldError est transformé en ApiError avec un message personnalisé basé sur la balise du champ. . La tranche d'ApiError est ensuite codée en JSON et renvoyée sous forme de réponse d'erreur avec des clés dynamiques correspondant aux champs.
Conclusion
En personnalisant les messages d'erreur de validation à l'aide de balises struct , les développeurs peuvent fournir des commentaires plus conviviaux et informatifs lors de la validation des données. Cette approche améliore l'expérience utilisateur et simplifie le processus de débogage, facilitant ainsi l'identification et la correction des erreurs de saisie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!