php-Editor Yuzai bietet Ihnen ein praktisches Entwicklungstool – einen universellen benutzerdefinierten Validator im Go Gin-Framework. Als leistungsstarkes Web-Framework bietet Go Gin eine leistungsstarke Validierungsfunktion, um Entwicklern dabei zu helfen, die Rechtmäßigkeit und Integrität von Daten bei der Verarbeitung von Benutzereingaben sicherzustellen. Universelle benutzerdefinierte Validatoren können verschiedene Validierungsregeln an die Entwicklungsanforderungen anpassen, den Code-Schreibprozess vereinfachen und die Entwicklungseffizienz verbessern. In diesem Artikel wird detailliert beschrieben, wie ein universeller benutzerdefinierter Validator erstellt wird, und seine Verwendung sowie Vorsichtsmaßnahmen werden erläutert. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, Sie werden enorm davon profitieren. Lassen Sie uns die universellen benutzerdefinierten Validatoren im Go Gin-Framework erkunden!
Ich verwende Go Gin, um eine API in meinem Projekt zu erstellen. Ich musste einen benutzerdefinierten Validator erstellen, also habe ich so etwas erstellt:
var valueone validator.func = func(fl validator.fieldlevel) bool { value, ok := fl.field() if ok { if value != "one" { return true } } return true } var valuetwo validator.func = func(fl validator.fieldlevel) bool { value, ok := fl.field() if ok { if value != "two" { return true } } return true } ....
Gibt es eine Möglichkeit, einen einzelnen Validator zu erstellen, der allgemeiner ist und in beiden Fällen verwendet werden kann, anstatt fast denselben benutzerdefinierten Validator mehrmals zu erstellen, wie zum Beispiel:
var value validator.Func = func(fl validator.FieldLevel, param) bool { value, ok := fl.Field() if ok { if value != param { return true } } return true }
Ich kann keine Möglichkeit finden, Parameter an benutzerdefinierte Validatoren in Gin zu übergeben oder eine andere Möglichkeit, diese generischen Validatoren zu erstellen. Ich muss Tausende nahezu ähnlicher Validatoren erstellen, möchte aber nicht für jeden Validator benutzerdefinierte Validatoren erstellen.
Sie können die Funktionsstruktur nicht ändern, da sie im Paket so definiert ist.
// func accepts a fieldlevel interface for all validation needs. the return // value should be true when validation succeeds. type func func(fl fieldlevel) bool
Stattdessen können wir benutzerdefinierte Validierungs-Tags mithilfe von Parametern ausprobieren
Siehe Beispiel unten
package main import ( "github.com/go-playground/validator" ) type Data struct { One string `json:"one" validate:"custom_validation=one"` Two string `json:"two" validate:"custom_validation=two"` } var validate *validator.Validate func main() { validate = validator.New() err := validate.RegisterValidation("custom_validation", func(fl validator.FieldLevel) bool { value := fl.Field() param := fl.Param() return value.String() == param }) if err != nil { panic(err) } // this will succeed { data := &Data{ One: "one", Two: "two", } err = validate.Struct(data) if err != nil { panic(err) } } // it will fail here { data := &Data{ Two: "one", One: "two", } err = validate.Struct(data) if err != nil { panic(err) } } }
Weitere Beispiele hier
Hinweis: Golang unterstützt!==
nicht
Das obige ist der detaillierte Inhalt vonGo Gin: Erstellen Sie einen generischen benutzerdefinierten Validator. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!