Maison > développement back-end > Golang > Comment personnaliser les messages d'erreur de la validation des balises Struct de Gin ?

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

Susan Sarandon
Libérer: 2024-12-15 05:42:10
original
516 Les gens l'ont consulté

How to Customize Error Messages from Gin's Struct Tag Validation?

Personnalisation des messages d'erreur de la validation des balises Struct

Dans Gin, la validation des balises struct est utilisée pour garantir l'intégrité des données avant l'insertion de la base de données. L'erreur par défaut renvoyée est détaillée et peu informative pour l'utilisateur. Cet article décrit comment personnaliser le message d'erreur pour fournir une réponse plus significative.

Gin utilise le package go-playground/validator/v10 pour la validation. Les erreurs sont renvoyées sous la forme validator.ValidationErrors. Pour personnaliser le message, utilisez le package d'erreurs standard pour déballer l'erreur et accéder aux champs validator.FieldError.

Créez un modèle d'erreur (par exemple, ApiError) pour définir la structure de votre message d'erreur personnalisé. Par exemple :

type ApiError struct {
    Field string
    Msg   string
}
Copier après la connexion

Dans votre gestionnaire, gérez l'erreur comme suit :

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

Enfin, définissez une fonction d'assistance pour mapper les balises de validation aux messages personnalisés :

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

En utilisant cette approche, les messages d'erreur seront personnalisés avec le nom du champ et un message personnalisé basé sur la balise de validation.

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