首頁 > 後端開發 > Golang > 主體

如何在同一連接埠上組合多個 http.ServeMux 實例?

Linda Hamilton
發布: 2024-11-02 10:18:02
原創
694 人瀏覽過

How to Combine Multiple http.ServeMux Instances on the Same Port?

組合多個http.ServeMux 實例

要在同一網路位址和連接埠上提供多個http.ServeMux 實例,combinedMux 函數可以是實作如下:

<code class="go">func combineMux(muxes ...*http.ServeMux) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        var h http.Handler

        for _, mux := range muxes {
            if h = mux.Handler(r); h != nil {
                h.ServeHTTP(w, r)
                return
            }
        }

        http.NotFound(w, r)
    })
}</code>
登入後複製

此函數建立一個新的http.Handler,它迭代提供的ServeMux 實例並為給定請求提供第一個符合的處理程序。如果沒有找到,則傳回 404 Not Found 回應。

替代方法:嵌套 ServeMux 實例

實現相同結果的另一種方法是嵌套 ServeMux彼此內部的實例。這是可能的,因為 http.ServeMux 實作了 http.Handler 介面。

例如,使用此方法在同一連接埠和主機上提供muxA 和muxB:

<code class="go">rootMux := http.NewServeMux()
rootMux.Handle("/muxa/", muxA)
rootMux.Handle("/muxb/", muxB)
http.ListenAndServe(":8080", rootMux)</code>
登入後複製

在此在這種情況下,rootMux 將處理對其根URL 的所有請求,並將對/muxa/ 和/muxb/ 的請求委託給對應的ServeMux 實例。請注意,每個嵌套的 ServeMux 都需要處理自己的子路徑前綴(例如,/muxa/ 表示 muxA)。

以上是如何在同一連接埠上組合多個 http.ServeMux 實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!