Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Daten zwischen Middleware und Handlern in Go teilen?

Wie kann ich Daten zwischen Middleware und Handlern in Go teilen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-17 09:03:03900Durchsuche

How Can I Share Data Between Middleware and Handlers in Go?

So teilen Sie Daten zwischen Middleware und Handlern

Ihre Handler geben HTTP-Handler zurück, und Ihre Middleware akzeptiert HTTP-Handler und ruft sie nach der Ausführung auf Operationen. Um Daten von der Middleware an die Handler zu übergeben, können Sie das Kontextpaket nutzen.

import (
    "context"
    "github.com/gorilla/mux"
)

func Middleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // Middleware operations
        // Parse body/get token.
        token := parseToken(r)
        ctx := context.WithValue(r.Context(), "token", token)

        next.ServeHTTP(w, r.WithContext(ctx))
    })
}

func Handler() http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        token := r.Context().Value("token")
        // Continue with handler logic
    })
}

Dieser Ansatz vermeidet das Parsen des JWT sowohl in der Middleware als auch im Handler und gewährleistet so eine effiziente Ressourcennutzung. Beachten Sie, dass Sie jeden Datentyp übergeben können, indem Sie den Typ des Value-Arguments in r.Context().Value().

ändern

Das obige ist der detaillierte Inhalt vonWie kann ich Daten zwischen Middleware und Handlern in Go teilen?. 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