HTTP ルーターによる 404 の処理
HTTP ルーター ライブラリは、API 開発用の堅牢なルーティング機能を提供します。一般的なタスクの 1 つは、404 (Not Found) 応答の処理です。ドキュメントではカスタム 404 ハンドラーを定義できる可能性について簡単に説明されていますが、実装の詳細は混乱を招く可能性があります。
カスタム ハンドラー インターフェイスについて
httprouter.Router 構造体には以下が含まれます。 NotFound という名前のフィールド。これは http.Handler インターフェイスです。このインターフェイスは、ResponseWriter と Request を引数として受け取る単一のメソッド ServeHTTP() を定義します。
カスタム 404 ハンドラーの作成
カスタム 404 ハンドラーを作成するには、ServeHTTP() メソッド シグネチャを持つ関数を定義し、http.HandlerFunc() ヘルパー関数を使用してそれを http.Handler 値に変換します。
実装例:
<code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/plain; charset=utf-8") w.WriteHeader(http.StatusNotFound) // StatusNotFound = 404 w.Write([]byte("My own Not Found handler.")) w.Write([]byte(" The page you requested could not be found.")) }</code>
カスタム ハンドラーの設定
次に、カスタム ハンドラーを HTTP Router オブジェクトの NotFound フィールドに割り当てます。
<code class="go">router := httprouter.New() router.NotFound = http.HandlerFunc(MyNotFound)</code>
Manualカスタム ハンドラーの呼び出し
別の HTTP ハンドラー内からカスタム 404 ハンドラーを手動で呼び出す必要がある場合は、ResponseWriter と Request を渡すことで実行できます:
<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) { exists := ... // Check for resource existence if !exists { MyNotFound(w, r) // Pass ResponseWriter and Request return } // Resource exists, serve it // ... }</code>
以上がHTTP ルーターで 404 エラーをカスタム処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。