Go でエラーを返すハンドラーを使用したミドルウェア パターン
Go ミドルウェア パターンは、特定の処理を集合的に実行するモジュール式 HTTP ハンドラーを作成する便利な方法を提供します。メインハンドラー関数の実行前、実行中、または実行後の操作。ただし、このパターンは通常、エラーを返すハンドラーをサポートしません。
この制限に対処するには、エラーを返すハンドラーが返すエラーを HTTP 応答に変換することで、エラーを返すハンドラーのアダプターとして機能するミドルウェアを実装できます。 。このミドルウェアはチェーン内の最後のミドルウェアとして追加でき、構成されたハンドラーの最終結果を処理します。以下に例を示します。
type errorHandler func(http.ResponseWriter, *http.Request) error func (f errorHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { err := f(w, r) if err != nil { // log.Println(err) fmt.Println(err) os.Exit(1) } }
このミドルウェアは、エラーを返すハンドラーをラップし、生成されるエラーが適切に処理されるようにします。このミドルウェアを使用するには、エラーを返すハンドラーのラッパーを作成します:
func errorHandle(w http.ResponseWriter, r *http.Request) error { w.Write([]byte(`Hello World from errorHandle!`)) return nil }
次に、それをミドルウェア チェーンと組み合わせます。これには、エラーを返さない他のミドルウェアを含めることができます:
middlewareChain := moreMiddleware(myMiddleware) http.Handle("/", middlewareChain(errorHandler(errorHandle)))
このアプローチにより、エラーを返すハンドラーを他のミドルウェアとシームレスに組み合わせることができ、エラーが最後にエラー ハンドラー ミドルウェアによって処理されるようになります。チェーン。
以上がGo ミドルウェアはエラーを返すハンドラーをどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。