「Not Found」(404) httprouter での処理のカスタマイズ
httprouter ライブラリを使用して API を開発する場合、404 (Not Found) の処理応答は重要なタスクです。ドキュメントでは 404 を手動で処理する可能性について言及していますが、カスタム ハンドラーの実装は困難な場合があります。
NotFound フィールドについて理解する
httprouter.Router 構造体には、という名前のフィールドが含まれています。 NotFound、http.Handler 型です。これは、NotFound の値が http.Handler インターフェイスに存在する ServeHTTP メソッドを実装する必要があることを意味します。
カスタム "Not Found" ハンドラーの作成
独自のハンドラーを定義するにはカスタム ハンドラーを使用する場合は、ServeHTTP メソッドに一致する署名を持つ関数を作成できます。
<code class="go">func MyNotFound(w http.ResponseWriter, r *http.Request) { // ... Custom handling logic }</code>
関数をハンドラーに変換する
関数を値に変換するにはhttp.Handler インターフェイスを実装する場合は、http.HandlerFunc() ヘルパー関数を使用できます。
<code class="go">router := httprouter.New() router.NotFound = http.HandlerFunc(MyNotFound)</code>
カスタム ハンドラーの手動呼び出し
他のハンドラー内からカスタム ハンドラーを手動で呼び出し、ハンドラーに ResponseWriter と *Request を提供します。
<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) { // ... Code to determine resource validity if !resourceExists { MyNotFound(w, r) // Manual invocation of custom handler return } // ... Resource exists, serve it normally }</code>
結論
次の手順に従うことで、次のことができます。 httprouter ベースの API で「Not Found」処理プロセスを効果的にカスタマイズし、存在しないリソースにアクセスしようとしたときにユーザーが適切な応答を受け取るようにします。
以上がhttprouter を使用して Go で 404 (Not Found) 応答をカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。