我应该在 golang 中直接使用 ServeMux 还是 http

我想知道我是否应该创建一个新的ServeMux并将其注册到http.Server或者我应该调用http.HandleFunchttp.Handler直接?

我认为带有 ServeMux 的路由更好,因为http.HandleFunc显然会混淆HTTP 包的全局状态,这在 Go 中被认为是不好的做法。但是,在很多教程中,甚至是官方的教程中,我也经常看到使用的http.HandleFunc路由。

这让我想知道:为什么要http.HandleFunc在有 时使用ServeMux?我知道 ServeMux 有一些优点(例如,您可以在不重复前缀的情况下嵌套它),但我想知道为什么我应该选择http.HandleFuncMultiplexer,尤其是HandleFuncServeMux内部使用 a 时。


临摹微笑
浏览 137回答 1
1回答

湖上湖

您走在正确的轨道上:ServeMux出于您概述的原因,您应该更喜欢实例化自己的。在使用时,使用DefaultServeMux也存在暴露分析端点的风险net/http/pprof,因为它们附加到 DefaultServeMux。http.Handle|HandleFunc 是方便的方法,也许对于保持示例代码中的样板文件很有用,但是创建 ServeMux 使您能够包装它,将它嵌套在另一个中,从构造函数导出它等。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go