「Not Found」のカスタマイズ(404) httprouter での扱い
httprouter ライブラリを使用して API を開発する場合の 404 (Not Found) の扱い応答は重要なタスクです。ドキュメントには 404 を手動で処理する可能性について言及されていますが、カスタム ハンドラーの実装は困難な場合があります。
NotFound フィールドについて理解する
httprouter.Router 構造体には、という名前のフィールドが含まれています。 NotFound、http.Handler 型です。これは、NotFound の値が http.Handler インターフェイスに存在する ServeHTTP メソッドを実装する必要があることを意味します。
カスタム "Not Found" ハンドラーの作成
独自のハンドラーを定義するにはカスタム ハンドラーを使用すると、ServeHTTP メソッドに一致する署名を持つ関数を作成できます:
func MyNotFound(w http.ResponseWriter, r *http.Request) {
// ... Custom handling logic
}
関数をハンドラーに変換する
関数を http.Handler インターフェイスを実装する値に変換するには、http.HandlerFunc() ヘルパーを使用できます。関数:
router := httprouter.New()
router.NotFound = http.HandlerFunc(MyNotFound)
カスタム ハンドラーの手動呼び出し
他のハンドラー内からカスタム ハンドラーを手動で呼び出したい場合は、ハンドラーを指定します。 ResponseWriter と *Request:
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
}
結論
これらの手順に従うことで、httprouter ベースの API の「見つかりません」処理プロセスを効果的にカスタマイズでき、次のような場合にユーザーが適切な応答を確実に受け取ることができます。存在しないリソースにアクセスしようとしています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3