HTTProuter による HTTP 404 処理のカスタマイズ
HTTProuter は、404 応答を手動で処理する機能を提供します。これを実現するには、カスタム ハンドラー関数を定義する必要があります。
HTTProuter の Router 構造体には、http.Handler 型の NotFound フィールドがあります。 http.Handler インターフェイスは、ServeHTTP(ResponseWriter, *Request) という単一のメソッドを定義します。したがって、カスタム ハンドラーはこの関数を実装する必要があります。
カスタム ハンドラーを作成するには、シグネチャ func(http.ResponseWriter, *http.Request) を持つ関数を定義します。 http.HandlerFunc() ヘルパー関数を使用して、この関数を http.Handler 値に変換します。例:
<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) // Set status to 404 w.Write([]byte("My NotFound handler")) } router.NotFound = http.HandlerFunc(MyNotFound)</code>
このカスタム ハンドラーは HTTProuter によってトリガーされます。あるいは、ResponseWriter インスタンスと *Request インスタンスを渡すことで、他のハンドラーから手動で呼び出すこともできます:
<code class="go">func ResourceHandler(w http.ResponseWriter, r *http.Request) { if ... { // Check for resource availability router.NotFound(w, r) return } // ... Serve the resource }</code>
以上がHTTProuter を使用して Go で HTTP 404 エラー処理をカスタマイズする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。