gpt4 book ai didi

http - Go:如何组合两个(或更多)http.ServeMux?

转载 作者:IT王子 更新时间:2023-10-29 00:51:25 27 4
gpt4 key购买 nike

鉴于您有两个 http.ServeMux 实例,并且您希望它们在相同的端口号上提供服务,如下所示:

    muxA, muxB http.ServeMux
//initialise muxA
//initialise muxB
combinedMux := combineMux([muxA, muxB])
http.ListenAndServe(":8080", combinedMux)

如何编写如上所述的 combinedMux 函数?

...或者有其他方法可以完成同样的事情吗?

最佳答案

因为 http.ServeMux 也是一个 http.Handler,您可以轻松地将一个 mux 嵌套在另一个 mux 中,即使是在相同的端口和相同的主机名上。这是一个这样做的例子:

rootMux := http.NewServeMux()
subMux := http.NewServeMux()

// This will end up handling /top_path/sub_path
subMux.HandleFunc("/sub_path", myHandleFunc)

// Use the StripPrefix here to make sure the URL has been mapped
// to a path the subMux can read
rootMux.Handle("/top_path/", http.StripPrefix("/top_path", subMux))

http.ListenAndServe(":8000", rootMux)

请注意,如果没有 http.StripPrefix() 调用,您将需要处理下多路复用器中的整个路径。

关于http - Go:如何组合两个(或更多)http.ServeMux?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23693520/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com