ホームページ  >  記事  >  バックエンド開発  >  httprouter のカスタム ハンドラーで 404 エラーを処理する方法は?

httprouter のカスタム ハンドラーで 404 エラーを処理する方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-28 03:47:30716ブラウズ

How to Handle 404 Errors with Custom Handlers in httprouter?

httprouter のカスタム ハンドラーによる 404 エラーの処理

httprouter で構築された HTTP API では、404 (Not Found) エラーの処理にはカスタム ハンドラーが必要です。ドキュメントではこの可能性について言及していますが、その作成方法については明示的な説明がありません。

カスタム ハンドラーのセットアップ

404 エラーを手動で処理するには、次の手順を実行します。これらの手順:

  1. 次のシグネチャを持つ関数を定義します。

    <code class="go">func(http.ResponseWriter, *http.Request)</code>
  2. http を使用して関数を http.Handler に変換します。 HandlerFunc() ヘルパー関数。

    <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."))
    
        // or with more detailed message
        w.Write([]byte(" The page you requested could not be found."))
    }</code>
  3. MyNotFound ハンドラーを httprouter の NotFound フィールドに割り当てます。

    <code class="go">var router *httprouter.Router = ... // Your router value
    router.NotFound = http.HandlerFunc(MyNotFound)</code>

カスタム ハンドラーの手動呼び出し

ハンドラーでは、必要に応じて、ResponseWriter と *Request:

<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) {
    exists := ... // Find out if requested resource is valid and available
    if !exists {
        MyNotFound(w, r) // Pass ResponseWriter and Request
        // Or via the Router:
        // router.NotFound(w, r)
        return
    }
    // Resource exists, serve it
    // ...
}</code>

これらを実装することで、MyNotFound ハンドラーを手動で呼び出すことができます。これらの手順を実行すると、httprouter ベースの API で 404 エラーを効果的に処理し、必要に応じて動作をカスタマイズできます。

以上がhttprouter のカスタム ハンドラーで 404 エラーを処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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