为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
临摹微笑 2021-12-27 17:50:52
我想知道我是否应该创建一个新的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 使您能够包装它,将它嵌套在另一个中,从构造函数导出它等。


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信