ホームページ >バックエンド開発 >Golang >Go サーバーのフロントエンド ルートの 404 エラーを処理する方法は?

Go サーバーのフロントエンド ルートの 404 エラーを処理する方法は?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 14:39:15192ブラウズ

How to Handle 404 Errors for Frontend Routes in a Go Server?

Go で未解決のフロントエンド ルートの 404 エラーを処理する

React フロントエンド アプリと Go API の両方を備えたサーバー セットアップで、存在しないフロントエンドにアクセスするルート (例: http://localhost:8090/my_frontend_path) を実行すると 404 エラーが発生します。これに対処するには、いくつかのアプローチがあります。そのうちの 1 つは、サーバー上で「キャッチオール」戦略を利用することです。

「キャッチオール」アプローチ

これこのメソッドにより、他の場所で明示的に処理されていないパスに対して、サーバーは必ずindex.htmlページを返します。フロントエンド アプリケーションは、index.html でロードされるため、ルーティング自体を処理できます。

Go での簡単な実装:

const FSPATH = "./build/"

func main() {
    fs := http.FileServer(http.Dir(FSPATH))

    http.HandleFunc("/my_api", func(w http.ResponseWriter, _ *http.Request) { w.Write([]byte("API CALL")) })
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // Return index.html if the requested file doesn't exist
        if r.URL.Path != "/" {
            fullPath := FSPATH + strings.TrimPrefix(path.Clean(r.URL.Path), "/")
            _, err := os.Stat(fullPath)
            if err != nil {
                if !os.IsNotExist(err) {
                    panic(err)
                }
                r.URL.Path = "/"
            }
        }
        fs.ServeHTTP(w, r)
    })
    http.ListenAndServe(":8090", nil)
}

ファイルの存在を確認してフォールバックすることにより、 index.html が見つからない場合、このコードは React ルーターがすべてのパスのルーティングを引き継ぎ、処理することを保証します。このアプローチは、未解決のルートをフロントエンドにリダイレクトするシンプルなサーバー側ソリューションを提供します。

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

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