Validation des données en Go avec go-playground/validator
Dans le développement moderne en Go (Golang), la validation des données entrantes est une étape critique pour le traitement des requêtes, des formulaires ou des configurations. La bibliothèque go-playground/validator est la norme de facto pour la vérification des structures, des champs et des objets imbriqués complexes. Elle fournit un ensemble puissant de règles (tags) pour la validation, prend en charge les messages d'erreur personnalisés, l'internationalisation et l'intégration avec les frameworks web.
Pourquoi la validation des données est-elle nécessaire ?
La vérification manuelle de chaque champ entraîne une duplication de code et des erreurs. validator permet de décrire les règles directement dans les tags de la structure, ce qui rend le code propre, déclaratif et facile à maintenir. Vous pouvez vérifier les types, les plages, l'obligation des champs, les formats (email, URL, UUID) et même effectuer des comparaisons entre champs.
Installation
Pour installer la bibliothèque, exécutez la commande dans le terminal (nécessite Go 1.18+) :
go get github.com/go-playground/validator/v10Importez ensuite le package dans votre code :
import "github.com/go-playground/validator/v10"Fonctionnalités principales
- Tags de validation :
required,min,max,len,email,url,uuid,oneofet des dizaines d'autres. - Validateurs personnalisés : création de vos propres règles via
RegisterValidation. - Structures imbriquées : vérification des champs à l'intérieur d'objets imbriqués.
- Messages d'erreur : traductions dans différentes langues, personnalisation du texte.
- Validation par lots : vérification des tableaux et des slices.
Exemple de code en Go (Golang)
package main
import ( "fmt" "github.com/go-playground/validator/v10")
// User représente une structure avec des tags de validationtype User struct { Name string `validate:"required,min=2,max=50"` Email string `validate:"required,email"` Age int `validate:"gte=0,lte=130"` Role string `validate:"required,oneof=admin user guest"`}
func main() { validate := validator.New()
user := User{ Name: "A", Email: "invalid-email", Age: 200, Role: "superadmin", }
err := validate.Struct(user) if err != nil { for _, err := range err.(validator.ValidationErrors) { fmt.Printf("Le champ '%s' n'a pas passé la validation : %s", err.Field(), err.Tag()) } } else { fmt.Println("Données valides !") }}Quand utiliser go-playground/validator ?
Cette bibliothèque est idéale pour tout projet Go nécessitant une vérification fiable des données d'entrée : API REST (avec Gin, Echo, Chi), traitement de formulaires, fichiers de configuration, analyse CSV/JSON. Elle est particulièrement utile dans une architecture de microservices, où chaque service doit garantir l'exactitude des données en entrée.
Si vous avez besoin d'une validation rapide, flexible et extensible sans écrire des tonnes de conditions — go-playground/validator sera votre meilleur choix.
Aussi dans la bibliothèque
Envoi d'email en Kotlin : bibliothèques et exemples de code
Event Bus et le pattern Observer en JavaScript (Node.js) — création de systèmes d'événements flexibles
Travailler avec Markdown en Swift (iOS/macOS) : bibliothèques Down, SwiftMarkdown