ホームページ >バックエンド開発 >Golang >Go で複数の http.ServeMux インスタンスを結合するには?

Go で複数の http.ServeMux インスタンスを結合するには?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 07:22:27730ブラウズ

How to Combine Multiple http.ServeMux Instances in Go?

複数の http.ServeMux インスタンスの結合

Go では、http.ServeMux は HTTP リクエストを処理およびルーティングする便利な方法です。ただし、http.ServeMux の 2 つ以上のインスタンスを組み合わせて、同じポート番号で同時にサービスを提供する必要がある状況が発生する場合があります。

機能を組み合わせた ServeMux のネスト

別個の CombinedMux 関数を使用すると、http.ServeMux が http.Handler インターフェイスを実装するという事実を利用できます。これにより、あるマルチプレクサを別のマルチプレクサの中に入れ子にすることができます:

<code class="go">rootMux := http.NewServeMux()
subMuxA := http.NewServeMux()
subMuxB := http.NewServeMux()

// Initialize muxA and muxB with their respective handlers

// Handle requests for "/sub_path/a" in subMuxA
subMuxA.HandleFunc("/sub_path/a", myHandleFuncA)

// Handle requests for "/sub_path/b" in subMuxB
subMuxB.HandleFunc("/sub_path/b", myHandleFuncB)

// Nest subMuxA and subMuxB under "/top_path" in rootMux
rootMux.Handle("/top_path/a", subMuxA)
rootMux.Handle("/top_path/b", subMuxB)

http.ListenAndServe(":8080", rootMux)</code>

この例では:

  • rootMux は、すべての受信リクエストを処理するメインのマルチプレクサです。
  • subMuxA
  • /top_path/a で始まるパスを持つリクエストは subMuxA によって処理されます。
  • /top_path/b で始まるパスを持つリクエストは、subMuxA によって処理されます。 subMuxB.

結論

http.ServeMux インスタンスをネストすることで、複数の Mux を簡単に組み合わせて同じポートで提供でき、さまざまな種類のGo アプリケーション内のリクエスト。

以上がGo で複数の http.ServeMux インスタンスを結合するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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