ホームページ >バックエンド開発 >Golang >httprouter を使用して Go で 404 (Not Found) 応答をカスタマイズする方法

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 02:24:021053ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。