ミドルウェアとハンドラー間でデータを共有する方法
ハンドラーは HTTP ハンドラーを返し、ミドルウェアは HTTP ハンドラーを受け入れ、そのハンドラーの実行後に呼び出します。操作。ミドルウェアからハンドラーにデータを渡すには、コンテキスト パッケージを利用できます。
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 中国語 Web サイトの他の関連記事を参照してください。