Bibliothèque validator pour Go : guide complet
1. Qu'est-ce que c'est et pourquoi l'utiliser
La bibliothèque validator (nom complet du package : github.com/go-playground/validator/v10) est un outil puissant et flexible pour valider les structures et les champs individuels en Go. Elle permet de décrire de manière déclarative les règles de validation directement dans les tags des structures, rendant le code propre, lisible et facile à maintenir. Au lieu d'écrire des dizaines de lignes de vérifications manuelles (if-else, switch), il suffit d'ajouter des tags aux champs, et la bibliothèque fait tout le travail à votre place.
Pourquoi en avez-vous besoin ? Dans toute application web, API ou service manipulant des entrées utilisateur, il est crucial de vérifier les données avant de les traiter. Un email incorrect, un nom vide, un âge négatif, un mot de passe trop long — tout cela peut entraîner des erreurs de logique, des failles de sécurité (injections SQL, XSS) ou un plantage du serveur. validator résout ce problème avec élégance : vous définissez les règles une fois, puis vous appelez une seule fonction Validate.Struct() qui vérifie automatiquement tous les champs.
La bibliothèque prend en charge des dizaines de validateurs intégrés (required, min, max, email, url, uuid, oneof, len et bien d'autres), et permet également de créer vos propres validateurs personnalisés. Elle est activement utilisée en production, offre d'excellentes performances (grâce à la mise en cache de la réflexion) et est compatible avec les frameworks populaires comme Gin, Echo et Fiber. Si vous codez en Go et souhaitez éviter le code boilerplate, cette bibliothèque est un must-have.
2. Installation
L'installation de la bibliothèque se fait de manière standard via go get. Assurez-vous d'avoir Go version 1.18 ou supérieure (1.21+ recommandé).
go get github.com/go-playground/validator/v10
Après avoir exécuté la commande, le package sera ajouté à votre fichier go.mod. Importez-le dans votre code :
import "github.com/go-playground/validator/v10"
3. Démarrage rapide — exemple minimal fonctionnel
Créons une structure utilisateur simple et validons ses champs. Voici un exemple minimal qui illustre l'idée principale.
package main
import (
"fmt"
"github.com/go-playground/validator/v10"
)
// User — structure avec des tags de validation
type User struct {
Name string `validate:"required,min=2,max=50"`
Email string `validate:"required,email"`
Age int `validate:"gte=0,lte=150"`
}
func main() {
// Création d'une instance du validateur
validate := validator.New()
// Données de test
user := User{
Name: "A", // Nom trop court
Email: "email-invalide", // Email invalide
Age: -5, // Âge négatif
}
// Exécution de la validation
err := validate.Struct(user)
if err != nil {
// Parcours de toutes les erreurs
for _, err := range err.(validator.ValidationErrors) {
fmt.Printf("Champ : %s, Erreur : %s, Valeur : %v\n",
err.Field(), err.Tag(), err.Value())
}
} else {
fmt.Println("Validation réussie !")
}
}
Sortie du programme :
Champ : Name, Erreur : min, Valeur : A
Champ : Email, Erreur : email, Valeur : email-invalide
Champ : Age, Erreur : gte, Valeur : -5
Comme vous pouvez le voir, la bibliothèque détecte automatiquement toutes les violations et retourne des informations structurées sur chaque erreur.
4. Méthodes et fonctions principales
Voici 8 méthodes et fonctions clés de la bibliothèque. Pour chacune, la signature, la description et un exemple fonctionnel sont fournis.
4.1. validator.New()
Signature : func New() *Validate
Fonction : Crée une nouvelle instance du validateur. C'est l'objet principal par lequel toutes les vérifications sont effectuées. Il est recommandé de créer une seule instance pour toute l'application.
Aussi dans la bibliothèque
Bouncy Castle Java : guide complet avec exemples pratiques
Bibliothèques WebSocket TypeScript : ws et Socket.IO – guide complet
Travailler avec Excel en Go (Golang) : bibliothèques exelize et tealeg/xlsx
Travailler avec Excel en JavaScript (Node.js) : bibliothèques et exemples