HTTP ハンドラー内でのコンテキスト値の設定
コンテキスト値は、HTTP アプリケーションのハンドラー間でデータを受け渡す便利な方法を提供します。この Q&A は、http.HandleFunc 内でコンテキスト値を設定するためのベスト プラクティスを示します。
質問:
http.HandleFunc 内でコンテキスト値を効果的に設定する方法は?
答え:
質問で示されているアプローチ(リクエストオブジェクトの上書きを含む)は最適ではありません。代わりに、Request.WithContext メソッドを使用してリクエストの浅いコピーを作成し、新しいコピーにコンテキスト値を設定します。この浅いコピーへのポインタを返します。
コード:
func setValue(r *http.Request, val string) *http.Request { return r.WithContext(context.WithValue(r.Context(), myContext, val)) }
ハンドラー呼び出し:
別のハンドラーを呼び出すとき、変更したリクエストを次のように渡します:
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { r = setValue(r, "foobar") anotherHandler.ServeHTTP(w, r) })
このアプローチ
以上が「http.HandleFunc」内でコンテキスト値を適切に設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。