Dans Gin 1.17, utiliser la validation des balises struct pour la validation des données avant les opérations de base de données est simple. Bien que les messages d'erreur par défaut soient détaillés, ils peuvent être personnalisés pour fournir des commentaires plus clairs aux utilisateurs.
Gin utilise le package github.com/go-playground/validator/v10 pour validation. Lorsque la validation échoue, elle renvoie un objet validator.ValidationErrors. Ce message d'erreur détaillé contient des informations sur chaque champ dont la validation a échoué.
Pour obtenir des messages d'erreur personnalisés, vous pouvez :
Voici une implémentation qui traduit les erreurs de validation en une réponse JSON avec une erreur dynamique basée sur le champ structure :
type ApiError struct { Field string Msg string } func HandleValidationErrors(c *gin.Context, err error) { 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}) } } func msgForTag(tag string) string { switch tag { case "required": return "This field is required" case "email": return "Invalid email" } return "" }
Dans une fonction de gestionnaire, utilisez HandleValidationErrors pour gérer les erreurs de validation :
func UserHandler(c *gin.Context) { var u User err := c.BindQuery(&u); if err != nil { HandleValidationErrors(c, err) return } // ... }
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!