Go Validator Bibliothek: Das vollständige Handbuch
1. Was ist der Go Validator und warum braucht man ihn?
Die Bibliothek validator (vollständiger Paketname: github.com/go-playground/validator/v10) ist ein leistungsstarkes und flexibles Werkzeug zur Validierung von Strukturen und einzelnen Feldern in Go. Sie ermöglicht es, Validierungsregeln deklarativ direkt in den Struct-Tags zu definieren. Das macht den Code sauber, lesbar und leicht wartbar. Anstatt Dutzende Zeilen manueller Prüfungen (if-else, switch) zu schreiben, fügen Sie einfach Tags zu den Feldern hinzu, und die Bibliothek erledigt den Rest.
Warum ist das wichtig? In jeder Webanwendung, API oder jedem Dienst, der mit Benutzereingaben arbeitet, ist es entscheidend, Daten vor der Verarbeitung zu prüfen. Eine ungültige E-Mail, ein leerer Name, ein negatives Alter oder ein zu langes Passwort können zu Logikfehlern, Sicherheitslücken (SQL-Injection, XSS) oder Serverabstürzen führen. Der validator löst dieses Problem elegant: Sie definieren die Regeln einmal und rufen dann die eine Funktion Validate.Struct() auf, die automatisch alle Felder überprüft.
Die Bibliothek bietet Dutzende integrierte Validatoren (required, min, max, email, url, uuid, oneof, len und viele mehr) und erlaubt die Erstellung eigener, benutzerdefinierter Validatoren. Sie wird aktiv in der Produktion eingesetzt, bietet eine hervorragende Leistung (dank Reflection-Caching) und ist mit populären Frameworks wie Gin, Echo und Fiber kompatibel. Wenn Sie in Go entwickeln und Boilerplate-Code vermeiden möchten, ist diese Bibliothek ein Must-have.
2. Installation
Die Installation erfolgt auf dem Standardweg über go get. Stellen Sie sicher, dass Go Version 1.18 oder höher installiert ist (empfohlen wird 1.21+).
go get github.com/go-playground/validator/v10
Nach der Ausführung des Befehls wird das Paket zu Ihrer go.mod hinzugefügt. Importieren Sie es in Ihrem Code:
import "github.com/go-playground/validator/v10"
3. Schnellstart – Ein minimales funktionsfähiges Beispiel
Lassen Sie uns eine einfache Benutzerstruktur erstellen und ihre Felder validieren. Dies ist ein minimales Beispiel, das die grundlegende Idee demonstriert.
package main
import (
"fmt"
"github.com/go-playground/validator/v10"
)
// User – Struktur mit Validierungs-Tags
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() {
// Erstellen einer Validator-Instanz
validate := validator.New()
// Testdaten
user := User{
Name: "A", // Zu kurzer Name
Email: "invalid-email", // Ungültige E-Mail
Age: -5, // Negatives Alter
}
// Validierung durchführen
err := validate.Struct(user)
if err != nil {
// Alle Fehler durchgehen
for _, err := range err.(validator.ValidationErrors) {
fmt.Printf("Feld: %s, Fehler: %s, Wert: %v\n",
err.Field(), err.Tag(), err.Value())
}
} else {
fmt.Println("Validierung erfolgreich!")
}
}
Programmausgabe:
Feld: Name, Fehler: min, Wert: A
Feld: Email, Fehler: email, Wert: invalid-email
Feld: Age, Fehler: gte, Wert: -5
Wie Sie sehen, findet die Bibliothek automatisch alle Verstöße und gibt strukturierte Informationen zu jedem Fehler zurück.
4. Wichtige Methoden und Funktionen
Im Folgenden werden 8 wichtige Methoden und Funktionen der Bibliothek vorgestellt. Für jede werden die Signatur, eine Beschreibung und ein funktionsfähiges Beispiel angegeben.
4.1. validator.New()
Signatur: func New() *Validate
Funktion: Erstellt eine neue Validator-Instanz. Dies ist das Hauptobjekt, über das alle Prüfungen durchgeführt werden. Es wird empfohlen, eine einzige Instanz für die gesamte Anwendung zu erstellen.
Auch in der Bibliothek
GraphQL für Kotlin: Leistungsstarke Bibliotheken zur API-Erstellung
Generierung von PDF-Berichten mit JavaScript (Node.js): Puppeteer, PDFKit, jsPDF
node-cron: JavaScript-Aufgabenplaner