我想知道我是否应该创建一个新的ServeMux并将其注册到http.Server或者我应该调用http.HandleFunc和http.Handler直接?我认为带有 ServeMux 的路由更好,因为http.HandleFunc显然会混淆HTTP 包的全局状态,这在 Go 中被认为是不好的做法。但是,在很多教程中,甚至是官方的教程中,我也经常看到使用的http.HandleFunc路由。这让我想知道:为什么要http.HandleFunc在有 时使用ServeMux?我知道 ServeMux 有一些优点(例如,您可以在不重复前缀的情况下嵌套它),但我想知道为什么我应该选择http.HandleFuncMultiplexer,尤其是HandleFunc在ServeMux内部使用 a 时。
1 回答
湖上湖
TA贡献2003条经验 获得超2个赞
您走在正确的轨道上:ServeMux
出于您概述的原因,您应该更喜欢实例化自己的。
在使用时,使用DefaultServeMux
也存在暴露分析端点的风险net/http/pprof
,因为它们附加到 DefaultServeMux。
http.Handle|HandleFunc
是方便的方法,也许对于保持示例代码中的样板文件很有用,但是创建 ServeMux 使您能够包装它,将它嵌套在另一个中,从构造函数导出它等。
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消