15

新しい ServeMux を作成してに登録する必要があるのか​​、それとも直接http.Server呼び出す必要があるのか​​ 疑問に思っていましたか?http.HandleFunchttp.Handler

http.HandleFuncGo では悪い習慣と見なされている HTTP パッケージのグローバルな状態を明らかに台無しにするため、ServeMux を使用したルートの方が優れていると思います。ただし、多くのチュートリアルでは、公式のものであっても、http.HandleFuncルートが使用されていることがよくあります。

http.HandleFuncこれは私に疑問に思いますServeMux: ServeMux にはいくつかの利点があることは知っていますが (たとえば、プレフィックスを常に繰り返さずにネストできるなど)、特に内部で a を使用しているのに、なぜhttp.HandleFuncマルチプレクサよりも選択する必要があるのか​​疑問に思います。HandleFuncServeMux

編集: コメントで約束されているように、Golang-devで追加の (および役に立たない IMO 関数) を非推奨にするように依頼しましたが、彼らはノーと言っていました (まあ、人はノーと言っていました)。ここにリンクがあります。

4

1 に答える 1

9

あなたは正しい方向に進んでいますServeMux。概説した理由から、独自の をインスタンス化することをお勧めします。

を使用DefaultServeMuxすると、プロファイリング エンドポイントnet/http/pprofが DefaultServeMux にアタッチされているため、使用時にこれらのエンドポイントが公開されるリスクもあります。

http.Handle|HandleFunc便利なメソッドであり、サンプル コードのボイラープレートを抑えるのに役立つ可能性がありますが、ServeMux を作成すると、ラップしたり、別のコードにネストしたり、コンストラクターからエクスポートしたりできます。

于 2016-03-27T15:24:23.643 に答える