HTTP サーバーは通常、ユーザーが存在しない URL をリクエストすると、基本的な「404 ページが見つかりません」エラー メッセージを表示します。 。より有益なエクスペリエンスやカスタマイズされたエクスペリエンスを提供するには、カスタム エラー ページ ハンドラーを実装する必要があります。
Go の標準 HTTP パッケージには、処理されないすべてのリクエストを処理し、カスタム エラー ページを表示するメカニズムが存在します。 。これを実現する方法を詳しく見てみましょう。
カスタム エラー ハンドラー関数
カスタム エラー ページを処理する関数を作成します。この関数は 3 つの引数を取ります:
func errorHandler(w http.ResponseWriter, r *http.Request, status int) { // Set the HTTP status code. w.WriteHeader(status) // Customize the error response for specific status codes. if status == http.StatusNotFound { fmt.Fprint(w, "Custom 404 error message") } }
カスタム エラーの設定Handler
エラー ハンドラー関数は、 HTTPサーバー。これは、指定されたポートでサーバーを起動する http.ListenAndServe 関数で行われます。
http.ListenAndServe(":12345", nil)
nil を、すべてのリクエストを処理するカスタム HTTP リクエスト ハンドラーに置き換えます。
http.ListenAndServe(":12345", new(http.ServeMux))
ServeMux で、特定の URL の元のルート ハンドラーを追加します。
mux := http.NewServeMux() mux.HandleFunc("/smth/", smthHandler) mux.HandleFunc("/", homeHandler) http.ListenAndServe(":12345", mux)
最後に、 NotFoundHandler を ServeMux に渡して、特定のルート ハンドラーによって処理されない他のすべての URL を処理します。
mux.NotFoundHandler = http.HandlerFunc(errorHandler)
サンプル コード
上記のアプローチを実装する完全なサンプル コードは次のとおりです。次のように:
package main import ( "fmt" "net/http" ) func main() { mux := http.NewServeMux() mux.HandleFunc("/smth/", smthHandler) mux.HandleFunc("/", homeHandler) mux.NotFoundHandler = http.HandlerFunc(errorHandler) http.ListenAndServe(":12345", mux) } func smthHandler(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/smth/" { errorHandler(w, r, http.StatusNotFound) return } fmt.Fprint(w, "Welcome to smth") } func homeHandler(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/" { errorHandler(w, r, http.StatusNotFound) return } fmt.Fprint(w, "Welcome home") } func errorHandler(w http.ResponseWriter, r *http.Request, status int) { w.WriteHeader(status) if status == http.StatusNotFound { fmt.Fprint(w, "Custom 404 error message") } }
このコードは、特定の URL のルート ハンドラーを定義します。 (/smth/ および /) を割り当て、他のすべての未処理リクエストを処理するカスタム エラー ハンドラー関数 (errorHandler) を割り当てます。ユーザーが存在しない URL にアクセスしようとすると、デフォルトの「404 ページが見つかりません」メッセージの代わりにカスタム 404 エラー ページが表示されます。
以上がGo の標準 HTTP パッケージにカスタム 404 エラー ページを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。