go-playground/validator | Datenvalidierung in Go

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

Datenvalidierung in Go mit go-playground/validator

In der modernen Go-Entwicklung (Golang) ist die Validierung eingehender Daten ein kritisch wichtiger Schritt bei der Verarbeitung von Anfragen, Formularen oder Konfigurationen. Die Bibliothek go-playground/validator ist der De-facto-Standard für die Überprüfung von Strukturen, Feldern und komplexen verschachtelten Objekten. Sie bietet einen leistungsstarken Satz von Regeln (Tags) für die Validierung, unterstützt benutzerdefinierte Fehlermeldungen, Internationalisierung und Integration mit Web-Frameworks.

Warum ist Datenvalidierung notwendig?

Die manuelle Überprüfung jedes einzelnen Feldes führt zu Code-Duplizierung und Fehlern. validator ermöglicht es, die Regeln direkt in den Struktur-Tags zu beschreiben, was den Code sauber, deklarativ und leicht wartbar macht. Sie können Typen, Bereiche, Pflichtfelder, Formate (E-Mail, URL, UUID) überprüfen und sogar feldübergreifende Vergleiche durchführen.

Installation

Führen Sie zur Installation der Bibliothek den folgenden Befehl im Terminal aus (erfordert Go 1.18+):

go get github.com/go-playground/validator/v10

Importieren Sie dann das Paket in Ihren Code:

import "github.com/go-playground/validator/v10"

Hauptfunktionen

  • Validierungs-Tags: required, min, max, len, email, url, uuid, oneof und Dutzende weitere.
  • Benutzerdefinierte Validatoren: Erstellung eigener Regeln über RegisterValidation.
  • Verschachtelte Strukturen: Überprüfung von Feldern innerhalb verschachtelter Objekte.
  • Fehlermeldungen: Übersetzungen in verschiedene Sprachen, Anpassung des Textes.
  • Batch-Validierung: Überprüfung von Arrays und Slices.

Codebeispiel in Go (Golang)

package main

import ( "fmt" "github.com/go-playground/validator/v10")

// User repräsentiert eine Struktur mit Validierungs-Tagstype 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("Feld '%s' hat die Validierung nicht bestanden: %s", err.Field(), err.Tag()) } } else { fmt.Println("Daten sind gültig!") }}

Wann sollte man go-playground/validator verwenden?

Diese Bibliothek ist ideal für jedes Go-Projekt, das eine zuverlässige Überprüfung von Eingabedaten erfordert: REST-APIs (zusammen mit Gin, Echo, Chi), Formularverarbeitung, Konfigurationsdateien, CSV/JSON-Parsing. Besonders nützlich ist sie in einer Microservices-Architektur, bei der jeder Dienst die Korrektheit der eingehenden Daten sicherstellen muss.

Wenn Sie eine schnelle, flexible und erweiterbare Validierung benötigen, ohne eine Unmenge von Bedingungsanweisungen schreiben zu müssen, ist go-playground/validator Ihre beste Wahl.

Empfehlungen