我在思考是否应该创建一个新的ServeMux并向http.Server
注册它,还是直接调用http.HandleFunc
和http.Handler
?
我认为使用ServeMux路由更好,因为http.HandleFunc
显然会干扰HTTP包的全局状态,这在Go中被认为是不好的实践。但是,在许多教程中,甚至是官方教程中,我经常看到使用http.HandleFunc
路由的情况。
这让我想知道:为什么有ServeMux时要使用http.HandleFunc
呢?我知道ServeMux有一些优点(例如,您可以嵌套它而不必一次又一次地重复前缀),但我想知道为什么我应该选择http.HandleFunc
而不是Multiplexer,特别是HandleFunc
内部使用了ServeMux
。
编辑:如评论中所承诺的那样,我已要求废弃关于Golang-dev上的附加功能(我认为这些功能毫无意义),他们拒绝了(至少有一个人说拒绝了)。 这里是链接。
http.HandleFunc
和http.Handle
应该被弃用。只需添加两行代码使用Mux
和Server
,模棱两可总是不好的,特别是如果更明显的方式是“错误的方式”。 - Matt3o12