Gorilla Mux では、指定されたハンドラー関数に到達する前にネットワーク リクエストをインターセプトして処理するために、カスタム ミドルウェアをシームレスに統合できます。
カスタム ミドルウェアを作成するには、高階関数を定義しますhttp.Handler を受け入れ、新しい http.Handler を返します。この関数内では、リクエストを元のハンドラーに委任する前に、必要な操作を実行できます。
func Middleware(h http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { log.Println("middleware", r.URL) h.ServeHTTP(w, r) }) }
ミドルウェアを作成したら、 http.Handle function.
func main() { r := mux.NewRouter() r.HandleFunc("/", HomeHandler) http.Handle("/", Middleware(r)) }
これにより、すべての受信リクエストが指定されたリクエストによって処理される前にミドルウェアを通過することが保証されます。ハンドラー関数 (この例では HomeHandler)。
Gorilla Mux および Gorilla/sessions でカスタム ミドルウェアを利用する場合、メモリ リークを防ぐことが重要です。この問題を解決するには、gorilla/sessions で推奨されているように、最上位の mux を context.ClearHandler でラップします。
http.ListenAndServe(":"+portstring, context.ClearHandler(r))
これらの手順を実装すると、カスタム ミドルウェアを Gorilla Mux アプリケーションに効果的に統合でき、機能を強化できます。リクエスト処理を実行し、潜在的なメモリ リークを防ぎます。
以上がGorilla Mux でミドルウェアを効果的に統合および管理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。