Qu'est-ce que validator ?
validator est une bibliothèque populaire pour la validation de données en langage Rust. Elle fournit des outils flexibles et expressifs pour vérifier la correction des données d'entrée : chaînes de caractères, nombres, adresses email, URL, adresses IP, UUID et bien plus encore. La bibliothèque est basée sur des macros et des traits, ce qui permet de combiner facilement des règles de validation et de créer ses propres vérifications.
Pourquoi la validation des données est-elle nécessaire ?
Dans toute application qui traite des entrées utilisateur, des API ou des fichiers de configuration, il est essentiel de vérifier les données avant de les utiliser. Les erreurs de validation peuvent entraîner un plantage du programme, des vulnérabilités ou un fonctionnement incorrect. La bibliothèque validator aide à :
- Garantir l'intégrité des données
- Réduire la quantité de code boilerplate
- Assurer un traitement uniforme des erreurs
- Simplifier les tests
Installation
Ajoutez validator dans le fichier Cargo.toml :
[dependencies]validator = "0.18"serde = { version = "1.0", features = ["derive"] }serde est également souvent utilisé pour la désérialisation des données avant la validation.
Fonctionnalités principales
- Attributs de validation —
#[validate(...)]pour les champs des structures - Validateurs intégrés :
length,range,email,url,ip,uuid,contains,regex,custom - Validation imbriquée — vérification récursive des structures imbriquées
- Validateurs personnalisés — via des fonctions ou des closures
- Regroupement des erreurs — collecte de toutes les erreurs de validation dans un objet unique
ValidationErrors
Exemple de code en Rust
use validator::Validate;use serde::Deserialize;
#[derive(Debug, Deserialize, Validate)]struct User { #[validate(length(min = 2, max = 50))] name: String,
#[validate(email)] email: String,
#[validate(range(min = 13, max = 120))] age: u8,
#[validate(url)] website: Option<String>,}
fn main() { let user = User { name: "A".to_string(), email: "invalid-email".to_string(), age: 10, website: Some("not-a-url".to_string()), };
match user.validate() { Ok(_) => println!("Données valides"), Err(errors) => { for (field, errs) in errors.field_errors() { for err in errs { println!("Erreur dans le champ {} : {}", field, err); } } } }}Quand utiliser validator ?
La bibliothèque est idéale pour :
- Les serveurs web avec Actix, Axum, Rocket
- Le traitement de formulaires et de requêtes JSON
- L'analyse de fichiers de configuration
- Les applications CLI avec saisie utilisateur
- La validation des données avant écriture en base de données
Si vous avez besoin de vérifier rapidement et fiablement des données en Rust — validator sera un excellent choix.
Aussi dans la bibliothèque
Traitement et analyse Markdown en PHP : bibliothèques et outils
Validation des données en Rust : bibliothèques et approches pour un code fiable
CORS JavaScript (Node.js) : guide complet avec exemples
Envoi de SMS en Rust : RustSMS — bibliothèque API pour travailler avec des passerelles SMS