ホームページ >バックエンド開発 >Golang >Golang リクエストのコンテキストをミドルウェアとハ​​ンドラーに渡すにはどうすればよいですか?

Golang リクエストのコンテキストをミドルウェアとハ​​ンドラーに渡すにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-10 21:53:03427ブラウズ

How do I Pass Context in Golang Requests to Middleware and Handlers?

Golang リクエストのコンテキストをミドルウェアに渡す方法

Golang では、コンテキストの概念により、開発者はハンドラ内でデータを渡し、リクエストを変更できます。そしてミドルウェア。コンテキストを効果的に使用するには、コンテキストを正しく渡す方法を理解することが重要です。

ミドルウェアを定義するときは、提供されたハンドラーをラップして追加機能を組み込む必要があります。これは、必要な変更を加えた HTTP ハンドラーを返すクロージャを使用して実現されます。その後、ServeHTTP() メソッドを呼び出すことで、コンテキストを基礎となるハンドラーに渡すことができます。

たとえば、ユーザーを認証するには、認証トークンを受け取って別のトークンを返す checkAuth() というミドルウェア関数を作成できます。関数。この関数は、リクエストを処理する実際のハンドラをラップし、リクエストに有効なトークンが含まれているかどうかをチェックします。

次に、リクエストの処理を担当するハンドラを表す Handler 構造体について考えます。 ServeHTTP() メソッド内で、ハンドラーは、リクエスト パラメーターのデコードや外部サービスへのデータの受け渡しなど、コンテキストからの情報にアクセスする必要がある場合があります。

メイン関数では、ルーターを初期化し、mux.NewRouter を呼び出します。 () 新しいインスタンスを作成します。承認されたミドルウェアにコンテキストを渡すには、リクエストで WithContext() メソッドを使用して、バックグラウンド コンテキストからコンテキストを取得します。

最後に、ミドルウェア内で渡されたコンテキストにアクセスするには、次のようにして取得できます。 r.Context() を呼び出します。その後、WithValue() メソッドを使用して追加情報をコンテキストに保存し、後でハンドラーで取得できます。

これらの手順に従うことで、Golang リクエスト内のコンテキストをミドルウェアとハ​​ンドラーに効果的に渡すことができ、有効になります。リクエストの変更とアプリケーションのさまざまな部分にわたるデータの共有。

以上がGolang リクエストのコンテキストをミドルウェアとハ​​ンドラーに渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。