httprouter を使用して Go で 404 (Not Found) 応答をカスタマイズする方法

Linda Hamilton
リリース: 2024-10-26 02:24:02
オリジナル
973 人が閲覧しました

How to Customize 404 (Not Found) Responses in Go with httprouter?

「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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!