統合リクエスト処理のための複数の HTTP ServeMux インスタンスの結合
Go では、多くの場合、複数の HTTP サーブ マルチプレックス (ServeMux) を結合して、単一のアプリケーション内でさまざまなエンドポイントからのリクエストを処理します。これにより、モジュール式でスケーラブルなリクエスト処理が可能になります。 ServeMux インスタンスを結合するクエリの解決策を見てみましょう。
結合された HTTP ServeMux 関数
ServeMux インスタンスを結合する解決策は、リクエストを転送する新しい ServeMux を作成することです。リクエスト パスに基づくそれぞれのネストされた ServeMux。これは、質問で説明されている「combineMux」関数の実装です:
<code class="go">import "net/http" func combineMux(muxes ...*http.ServeMux) *http.ServeMux { combinedMux := http.NewServeMux() for _, mux := range muxes { combinedMux.Handle("/", mux) } return combinedMux }</code>
この関数は、ServeMux インスタンスのスライスを取得し、すべてのリクエストを結合された ServeMux に委任する新しい ServeMux を作成します。
代替アプローチ: ネストされた ServeMux の挿入
ServeMux インスタンスを結合する代替アプローチは、ネストされたネストを使用することです。これには、1 つの ServeMux をハンドラーとして別の ServeMux に挿入することが含まれます。以下に例を示します。
<code class="go">rootMux := http.NewServeMux() subMux := http.NewServeMux() subMux.HandleFunc("/sub_path", myHandleFunc) rootMux.Handle("/top_path/", http.StripPrefix("/top_path/", subMux))</code>
この例では、subMux は「/top_path/sub_path」エンドポイントのリクエストを処理し、rootMux は他のエンドポイントのリクエストを処理します。 http.StripPrefix は、subMux が「/sub_path」プレフィックスを持つリクエストのみを処理することを保証します。
結論
複数の HTTP ServeMux インスタンスを結合するには、主に 2 つのアプローチがあります。実行:
使用するアプローチは、アプリケーションの特定の要件とアーキテクチャによって異なります。
以上がGo で複数の HTTP ServeMux インスタンスを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。