[英]Should I use ServeMux or http directly in golang
我想知道我是否應該創建一個新的ServeMux並將其注冊到http.Server
還是應該直接調用http.HandleFunc
和http.Handler
?
我認為使用ServeMux的路由更好,因為http.HandleFunc
顯然會http.HandleFunc
HTTP包的全局狀態,這在Go中被認為是不好的做法。 但是,在許多教程中,即使是官方教程,我經常會看到正在使用的http.HandleFunc
路由。
這讓我想知道:為什么在有http.HandleFunc
時應該使用ServeMux
? 我知道ServeMux有一些優點(例如你可以嵌套它而不必一直重復前綴)但我想知道為什么我應該選擇http.HandleFunc
不是Multiplexer,特別是因為HandleFunc
在內部使用ServeMux
。
編輯:正如評論中所承諾的那樣,我已經要求在Golang-dev上棄用額外的(以及無用的IMO函數),他們說沒有(好吧,有人說沒有)。 鏈接在這里。
你走在正確的軌道上:出於你所概述的原因,你應該更喜歡實例化自己的ServeMux
。
使用DefaultServeMux
時還存在使用net/http/pprof
時暴露分析端點的風險,因為它們附加到DefaultServeMux。
http.Handle|HandleFunc
是方便的方法,可能對於保持示例代碼中的樣板代碼很有用,但創建ServeMux使您能夠將其包裝,將其嵌套在另一個中,從構造函數中導出等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.