Golangで404を書き換える方法

WBOY
リリース: 2024-02-08 21:30:19
転載
1164 人が閲覧しました

如何在 Golang 中重写 40​​4

Golang では、404 エラー ページの書き換えは一般的な要件であり、これは、よりフレンドリーでパーソナライズされたエラー プロンプトを提供するのに役立ちます。この記事では、PHPエディターのXiguaがGolangで404ページを書き換える方法を紹介します。 Gin フレームワークを使用して Web アプリケーションを構築し、カスタム ミドルウェアを通じて 404 エラーを処理します。この記事のガイダンスを通じて、ユーザー エクスペリエンスを向上させるために 404 ページを簡単かつ迅速に書き換える方法を学びます。はじめましょう!

質問内容

Web 開発で Go を使用する方法を学習中ですが、簡単な Web サイトを作成しようとすると、次のような問題に直面します。 リーリー

http.FileServerhttp.HandleFunc の間に競合があります。

たとえば、

http.ListenAndServe(":80", nil) と書くと、すべてのルート (http.HandleFunc) が機能しますが、実行しようとすると次の操作:

http.ListenAndServe(":80", http.FileServer(http.Dir("")))

有効なルートはありません (

http.HandleFunc("/") を除く) 。なぜ?

404 エラー ページをオーバーライドするにはどうすればよいですか? Go に

http.ResponseWriterhttp.Request インターフェイスを受け入れる http.HandleError のようなメソッドがあればよかったのですが、同様のものは見つかりません。

解決策

http.ListenAndServe:のドキュメントを確認してください。

handler が nil の場合、デフォルトのハンドラー http.HandleFunc が使用されます。 したがって、コードでは、

DefaultServeMux

を使用して 2 つのルートを登録しました。http.ListenAndServe(":80", nil) を呼び出すと、(ルートが追加した) デフォルトのハンドラーが使用されます。したがって、/test は機能します (詳細は以下を参照)。ただし、http.ListenAndServe(":80", fs) を実行すると、特定のハンドラー (fs) が渡されるため、すべてのリクエストがこのハンドラーに送信されます (これにより、ローカル ファイル システムからファイルを提供してみてください)。 この時点から、http.ListenAndServe(":80", nil)

が使用されていると仮定します (ハンドラーを追加して使用しないことは実際には意味がないため) )。 上記の

ServeMux それでは、ドキュメントを確認してみましょう: したがって、Mux はリクエストを受信し、リクエストを処理するためにどのハンドラーを呼び出す必要があるかを判断します (呼び出されるハンドラーは 1 つだけであることに注意してください)。マッチングはパターンの長さに基づいて行われます (つまり、この例では

/test

/ よりも長いため、優先されます)。これは、/test へのリクエストが fmt.Fprint(w, "test page") をトリガーし、その他すべてが読み込み中の index.html ハンドラーを呼び出すことを意味します。 fs を参照するハンドラーを追加していないため、ハンドラーは使用されないことに注意してください (コードはコンパイルされません - Golang Mux Router と http.FileServer を使用して、予想されるルート ファイルとカスタム 404

  • を実現します
  • Gorilla Mux と標準 http.FileServer を使用したカスタム 404
  • ゴラン。何を使うか? http.ServeFile(..) または http.FileServer(..)?
  • Golang をフロントエンドルーティングにリダイレクトするにはどうすればよいですか?
  • 以上がGolangで404を書き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:stackoverflow.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート