Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengendalikan Ralat 404 Semasa Melayani Frontend React dengan Go Backend?

Bagaimana untuk Mengendalikan Ralat 404 Semasa Melayani Frontend React dengan Go Backend?

Barbara Streisand
Lepaskan: 2024-12-14 15:26:15
asal
150 orang telah melayarinya

How to Handle 404 Errors When Serving a React Frontend with a 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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan