簡體   English   中英

我應該在golang中直接使用ServeMux或http

[英]Should I use ServeMux or http directly in golang

我想知道我是否應該創建一個新的ServeMux並將其注冊到http.Server還是應該直接調用http.HandleFunchttp.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM