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().
ändernDas 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!