Go ミドルウェア パターンとエラーを返すリクエスト ハンドラーを組み合わせる方法
Go ミドルウェア パターンは、ラッピングと前処理のための強力なツールですHTTP リクエスト。ただし、従来のミドルウェア ハンドラーはエラーを返すことができないため、エラー処理が複雑になる可能性があります。
エラーを返すリクエスト ハンドラー
ハンドラーがエラーを返せるようにするには、カスタム ハンドラーを定義できます。ハンドラー タイプ:
type errorHandler func(http.ResponseWriter, *http.Request) error
このタイプにより、ハンドラーはパニックやロギングを使用する代わりにエラーを生成できます。
エラー ミドルウェア
これらのエラーを処理するには、エラーを返すハンドラー タイプを受け入れることができる特別なミドルウェアが必要です。
func errorHandler(h errorHandler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { err := h(w, r) if err != nil { // Handle error appropriately (e.g., log, send error response) } }) }
このミドルウェアはエラーを返すハンドラーをラップし、エラーを返すハンドラーを処理します。
使用法
エラーを返すハンドラーでミドルウェア チェーンを使用するには、最終ハンドラーをエラー ミドルウェアでラップし、他のミドルウェアとチェーンするだけです。
// Create a middleware chain. moreMiddleware(myMiddleware(errorHandler(myHandlerReturningError)))
ルーター統合
簡単にするために、このパターンをサポートし、ミドルウェア チェーンを自動的に構築する独自のルーターを作成することを検討してください。
ルーターの例
https://github.com/fragmenta/mux/blob/master/mux.go
このサンプルルーターは、ミドルウェアチェーンを構築し、エラーを効率的に処理する方法を示しています。これは、エラー処理にカスタム ハンドラー タイプを使用する利点を示し、ミドルウェアの使用を簡素化します。
以上がGo ミドルウェアはリクエスト ハンドラーから返されたエラーをどのように処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。