如何在中間件和處理程序之間共享資料
您的處理程序返回HTTP 處理程序,並且您的中間件接受HTTP 處理程序並在執行其後調用它們運作。若要將資料從中間件傳遞到處理程序,您可以利用 context 套件。
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 }) }
這種方法避免了在中間件和處理程序中解析 JWT,從而確保資源的有效利用。請注意,您可以透過更改 r.Context().Value().
中 Value 參數的類型來傳遞任何類型的數據以上是如何在 Go 中的中間件和處理程序之間共享資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!