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

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

Patricia Arquette
Freigeben: 2024-12-07 16:27:18
Original
599 Leute haben es durchsucht

How to Customize Validation Error Messages in Gin 1.17 Using Struct Tags?

So passen Sie Fehlermeldungen aus der Struktur-Tag-Validierung an

In Gin 1.17 ist die Verwendung der Struktur-Tag-Validierung zur Datenvalidierung vor Datenbankoperationen unkompliziert. Während die Standardfehlermeldungen ausführlich sind, können sie angepasst werden, um ein klareres Benutzerfeedback zu geben.

Überblick über das Problem

Gin verwendet das Paket github.com/go-playground/validator/v10 für Validierung. Wenn die Validierung fehlschlägt, wird ein validator.ValidationErrors-Objekt zurückgegeben. Diese ausführliche Fehlermeldung enthält Informationen zu jedem Feld, dessen Validierung fehlgeschlagen ist.

Fehlermeldungen anpassen

Um benutzerdefinierte Fehlermeldungen zu erhalten, können Sie:

  • Die Standardfehlermeldung auspacken Geben Sie das Fehlerpaket ein.
  • Greifen Sie von der entpackten Seite aus auf die einzelnen validator.FieldError-Objekte zu validator.ValidationErrors.
  • Erstellen Sie ein benutzerdefiniertes Fehlermodell und füllen Sie es mit dem Feldnamen und einer benutzerdefinierten Fehlermeldung, die durch das Validierungs-Tag des Felds bestimmt wird.

Implementierungsbeispiel

Hier ist eine Implementierung, die Validierungsfehler in eine JSON-Antwort mit einem dynamischen feldbasierten Fehler übersetzt Struktur:

type ApiError struct {
    Field string
    Msg   string
}

func HandleValidationErrors(c *gin.Context, err error) {
    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})
    }
}

func msgForTag(tag string) string {
    switch tag {
    case "required":
        return "This field is required"
    case "email":
        return "Invalid email"
    }
    return ""
}
Nach dem Login kopieren

Verwendungsbeispiel

Verwenden Sie in einer Handlerfunktion HandleValidationErrors, um Validierungsfehler zu behandeln:

func UserHandler(c *gin.Context) {
    var u User
    err := c.BindQuery(&u);
    if err != nil {
        HandleValidationErrors(c, err)
        return
    }
    // ...
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Validierungsfehlermeldungen in Gin 1.17 mithilfe von Struktur-Tags anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage