Maison > développement back-end > Golang > Comment personnaliser les messages d'erreur de validation dans Gin 1.17 à l'aide des balises Struct ?

Comment personnaliser les messages d'erreur de validation dans Gin 1.17 à l'aide des balises Struct ?

Patricia Arquette
Libérer: 2024-12-07 16:27:18
original
572 Les gens l'ont consulté

How to Customize Validation Error Messages in Gin 1.17 Using Struct Tags?

Comment personnaliser les messages d'erreur de la validation des balises Struct

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.

Présentation du problème

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é.

Personnalisation des messages d'erreur

Pour obtenir des messages d'erreur personnalisés, vous pouvez :

  • Dérouler l'erreur standard tapez à l'aide du package d'erreurs.
  • Accédez aux objets validator.FieldError individuels à partir du déballé validator.ValidationErrors.
  • Construisez un modèle d'erreur personnalisé et remplissez-le avec le nom du champ et un message d'erreur personnalisé déterminé par la balise de validation du champ.

Exemple d'implémentation

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 ""
}
Copier après la connexion

Exemple d'utilisation

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
    }
    // ...
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal