Heim >Backend-Entwicklung >Golang >Wie kann ich Validierungsfehlermeldungen in Go mithilfe von Struktur-Tags anpassen?

Wie kann ich Validierungsfehlermeldungen in Go mithilfe von Struktur-Tags anpassen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 03:38:16353Durchsuche

How to Customize Validation Error Messages in Go Using Struct Tags?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn