validator — Datenvalidierung in Rust

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist ein validator?

validator ist eine beliebte Bibliothek zur Datenvalidierung in der Sprache Rust. Sie bietet flexible und ausdrucksstarke Werkzeuge zur Überprüfung der Korrektheit von Eingabedaten: Zeichenketten, Zahlen, E-Mail-Adressen, URLs, IP-Adressen, UUIDs und vieles mehr. Die Bibliothek basiert auf Makros und Traits, was es ermöglicht, Validierungsregeln einfach zu kombinieren und eigene Prüfungen zu erstellen.

Wozu dient die Datenvalidierung?

In jeder Anwendung, die mit Benutzereingaben, APIs oder Konfigurationsdateien arbeitet, ist es von entscheidender Bedeutung, Daten vor ihrer Verwendung zu prüfen. Validierungsfehler können zu Programmabstürzen, Sicherheitslücken oder Fehlfunktionen führen. Die Bibliothek validator hilft dabei:

  • Datenintegrität zu gewährleisten
  • Die Menge an Boilerplate-Code zu reduzieren
  • Eine einheitliche Fehlerbehandlung sicherzustellen
  • Das Testen zu vereinfachen

Installation

Fügen Sie validator zur Datei Cargo.toml hinzu:

[dependencies]validator = "0.18"serde = { version = "1.0", features = ["derive"] }

Häufig wird auch serde zur Deserialisierung von Daten vor der Validierung verwendet.

Hauptfunktionen

  • Validierungsattribute — #[validate(...)] für Felder von Strukturen
  • Integrierte Validatoren: length, range, email, url, ip, uuid, contains, regex, custom
  • Verschachtelte Validierung — rekursive Prüfung von verschachtelten Strukturen
  • Benutzerdefinierte Validatoren — über Funktionen oder Closures
  • Fehlergruppierung — Sammlung aller Validierungsfehler in einem einzigen ValidationErrors-Objekt

Rust-Codebeispiel

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!("Daten sind korrekt"), Err(errors) => { for (field, errs) in errors.field_errors() { for err in errs { println!("Fehler im Feld {}: {}", field, err); } } } }}

Wann sollte man validator verwenden?

Die Bibliothek eignet sich ideal für:

  • Webserver mit Actix, Axum, Rocket
  • Verarbeitung von Formularen und JSON-Anfragen
  • Parsen von Konfigurationsdateien
  • CLI-Anwendungen mit Benutzereingaben
  • Datenvalidierung vor dem Schreiben in die Datenbank

Wenn Sie Daten in Rust schnell und zuverlässig prüfen müssen, ist validator eine ausgezeichnete Wahl.

Empfehlungen