Heim >Backend-Entwicklung >Golang >Wie kann ich Validierungsfehlermeldungen in Go mithilfe von Struktur-Tags anpassen?
Anpassen von Validierungsfehlermeldungen mit Struktur-Tags
Bei der Go-Webentwicklung mit Gin spielt die Strukturvalidierung eine entscheidende Rolle bei der Sicherstellung der Datenintegrität vor der Persistenz . Die von der zugrunde liegenden Validierungsbibliothek bereitgestellten Standardfehlermeldungen können jedoch ausführlich und weniger benutzerfreundlich sein. In diesem Artikel wird untersucht, wie benutzerdefinierte Fehlermeldungen basierend auf Struktur-Tags zurückgegeben werden, sodass Entwickler den Benutzern aussagekräftigeres und umsetzbareres Feedback geben können.
Validator.ValidationErrors verstehen
Gin-Hebelwirkungen die Bibliothek github.com/go-playground/validator/v10 zur Validierung. Wenn die Validierung fehlschlägt, wird ein Fehler vom Typ validator.ValidationErrors zurückgegeben. Dieser Fehlertyp enthält einen Teil von validator.FieldError-Instanzen, die jeweils ein ungültiges Feld darstellen.
Fehlermeldungen anpassen
Um Fehlermeldungen anzupassen, können Sie den Validator entpacken. ValidationErrors-Fehler mithilfe des Fehlerpakets, greifen Sie auf validator.FieldError zu und erstellen Sie eine benutzerdefinierte Fehlermeldung basierend auf dem Tag des Felds. Mit dem Tag-Attribut in Strukturfeldern können Entwickler benutzerdefinierte Validierungsregeln und Fehlermeldungen angeben.
Betrachten Sie beispielsweise den folgenden Codeausschnitt:
type ApiError struct { Field string Msg string } func msgForTag(tag string) string { switch tag { case "required": return "This field is required" case "email": return "Invalid email" } return "" }
Dieser Code definiert eine ApiError-Struktur und einen Helfer Funktion msgForTag, die Tags benutzerdefinierten Fehlermeldungen zuordnet. Mit diesen können Sie den folgenden Handler implementieren:
var u User err := c.BindQuery(&u); if err != nil { var ve validator.ValidationErrors if errors.As(err, &ve) { out := make([]ApiError, len(ve)) for i, fe := range ve { out[i] = ApiError{fe.Field(), msgForTag(fe.Tag())} } c.JSON(http.StatusBadRequest, gin.H{"errors": out}) } return }
In diesem Handler wird der validator.ValidationErrors-Fehler ausgepackt und jeder validator.FieldError wird in einen ApiError mit einer benutzerdefinierten Nachricht basierend auf dem Tag des Felds umgewandelt . Das Segment von ApiError wird dann JSON-codiert und als Fehlerantwort mit dynamischen Schlüsseln zurückgegeben, die den Feldern entsprechen.
Fazit
Durch Anpassen von Validierungsfehlermeldungen mithilfe von Struktur-Tags können Entwickler während der Datenvalidierung benutzerfreundlicheres und informativeres Feedback geben. Dieser Ansatz verbessert die Benutzererfahrung und vereinfacht den Debugging-Prozess, sodass Eingabefehler leichter erkannt und korrigiert werden können.
Das obige ist der detaillierte Inhalt vonWie kann ich Validierungsfehlermeldungen in Go mithilfe von Struktur-Tags anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!