Validator Go : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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.

Recommendations