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

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

Barbara Streisand
Barbara Streisandoriginal
2024-12-10 03:38:16360parcourir

How to Customize Validation Error Messages in Go Using Struct Tags?

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!

Déclaration:
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