Go の HTTP パッケージでは、HandleFunc 関数を使用して、受信 HTTP リクエストを処理するハンドラー関数を登録できます。ハンドラー内でコンテキスト値を設定するのは一般的な方法ですが、最適なアプローチを決定する際に懸念が生じる場合があります。
1 つのアプローチは、コンテキスト パッケージの WithValue 関数を使用して、ハンドラー内にコンテキスト値を設定することです。ただし、次の使用法では潜在的な問題が発生する可能性があることに注意することが重要です。
*r を新しいリクエスト オブジェクトに割り当てると、スタック上のコードで間違ったコンテキスト値が使用される可能性があります。これに対処するために、推奨されるアプローチは、WithContext を使用してリクエストの浅いコピーを作成し、それへのポインタを返すことです。
浅いコピーへのポインタを返すことで、正しいコンテキスト値が保証されます。リクエスト処理パイプライン全体で使用されます。ハンドラーが他のハンドラーを呼び出す場合は、変更されたリクエストを後続のハンドラーに渡します。
このアプローチでは、元のリクエスト オブジェクトの変更に関連する潜在的な落とし穴を回避しながら、HTTP ハンドラー内でコンテキスト値を効果的に設定します。
以上がGo の HTTP ハンドラー内でコンテキスト値を安全に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。