首頁 > 後端開發 > Golang > 如何在 Go 中的中間件和處理程序之間共享資料?

如何在 Go 中的中間件和處理程序之間共享資料?

Barbara Streisand
發布: 2024-11-17 09:03:03
原創
965 人瀏覽過

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

如何在中間件和處理程序之間共享資料

您的處理程序返回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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板