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

Comment puis-je personnaliser les messages d'erreur de la validation des balises Struct de Go Gin ?

Mary-Kate Olsen
Libérer: 2024-12-06 21:25:15
original
433 Les gens l'ont consulté

How Can I Customize Error Messages from Go Gin's Struct Tag Validation?

Personnalisation des messages d'erreur pour la validation des balises Struct dans Go Gin

Gin, un framework Web populaire pour Go, utilise go-playground/validator/ v10 pour la validation de la structure. Lorsque la validation échoue, elle renvoie généralement des messages d'erreur détaillés. Cet article explique comment personnaliser ces messages pour offrir une expérience plus conviviale.

Comprendre le type d'erreur

L'erreur renvoyée par la validation de Gin est un validateur.ValidationErrors . Ce type d'erreur contient une collection de validator.FieldErrors, chacun représentant un champ invalide et sa balise de validation.

Personnalisation des messages d'erreur

Pour personnaliser les messages d'erreur, nous pouvons convertissez le validateur.ValidationErrors en erreur à l’aide de la fonction erreurs.As. Une fois convertis, nous pouvons accéder aux validator.FieldErrors individuels et construire des messages d'erreur personnalisés en fonction de la balise de validation utilisée.

Création d'un modèle d'erreur personnalisé

Tout d'abord, nous définissons un modèle d'erreur personnalisé, tel que :

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

Personnalisation des messages d'erreur pour la validation Balises

Ensuite, nous définissons une fonction d'assistance pour mapper les balises de validation aux messages d'erreur 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

Liaison et gestion des erreurs de validation

Dans notre fonction de gestionnaire, nous pouvons lier la requête à notre structure et vérifier la validation erreurs :

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

Exemple de sortie

En utilisant cette gestion des erreurs personnalisée, nous pouvons renvoyer une réponse JSON au format suivant :

{
    "errors": [
        {
            "Field": "Number",
            "Msg": "This field is required"
        }
    ]
}
Copier après la connexion

Cela fournit une réponse d'erreur plus conviviale et informative à l'utilisateur.

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