Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengendalikan Ralat 404 Semasa Melayani Frontend React dengan Go Backend?
Cara Melaksanakan Penghalaan Frontend dalam Aplikasi Go
Masalah:
Apabila mengakses tertentu laluan (/my_frontend_path) terus dalam penyemak imbas anda untuk aplikasi Go yang menyajikan React frontend, anda menghadapi ralat 404. Ini kerana pelayan Go tidak mengenali laluan, membawa kepada permintaan untuk halaman daripada pelayan.
Penyelesaian:
Untuk mewakilkan laluan yang tidak dikenali ke bahagian hadapan penghala bertindak balas, anda boleh melaksanakan salah satu daripada beberapa pendekatan:
1. Sejarah Cincang
Sejarah cincang disyorkan dalam soalan yang dipautkan dan melibatkan penambahan # pada URL untuk penghalaan pihak pelanggan. Ini memastikan pelayan tidak mentafsir laluan dan membenarkan penghala bahagian hadapan mengendalikannya.
2. Pendekatan Catch-All
Untuk penyelesaian sebelah pelayan semata-mata, anda boleh melaksanakan pendekatan catch-all yang mengembalikan index.html untuk mana-mana laluan yang tidak dikenali. Ini memastikan aplikasi bahagian hadapan dimuatkan dan penghala boleh mengesan dan menghalakan laluan dengan sewajarnya.
Begini cara anda boleh melaksanakannya dalam Go:
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) { // If the requested file exists then return if; otherwise return index.html (fileserver default page) 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) } // Requested file does not exist so we return the default (resolves to index.html) r.URL.Path = "/" } } fs.ServeHTTP(w, r) }) http.ListenAndServe(":8090", nil) }
Nota: Pendekatan ini akan mengembalikan index.html untuk semua laluan yang tidak dikenali, termasuk fail yang tidak wujud. Anda boleh mempertimbangkan untuk menambah had, seperti menyemak sambungan fail, jika ini menimbulkan isu.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat 404 Semasa Melayani Frontend React dengan Go Backend?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!