Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk mengubah hala Laluan Frontend dalam GoLang untuk Mengelakkan Ralat 404?

Bagaimana untuk mengubah hala Laluan Frontend dalam GoLang untuk Mengelakkan Ralat 404?

Patricia Arquette
Patricia Arquetteasal
2024-12-20 18:17:10823semak imbas

How to Redirect Frontend Routes in GoLang to Avoid 404 Errors?

Ubah hala GoLang ke Penghalaan Frontend

Penerangan Isu

Apabila mengakses laluan seperti "/my_frontend_path" terus dalam penyemak imbas, GoLang mengembalikan ralat 404 mewakilkan penghalaan ke bahagian hadapan React penghala.

Analisis Masalah

Isu utama ialah apabila mengakses laluan sedemikian sebelum penghala React dimulakan, pelayan mengendalikan permintaan dan mengembalikan ralat.

Single- Penyelesaian Pelayan

Pendekatan "Catch-all" bahagian pelayan yang mudah boleh dilaksanakan untuk mengubah hala semua laluan yang tidak disokong ke penghala bahagian hadapan. Pendekatan ini berfungsi dengan mengembalikan halaman index.html jika fail yang diminta tidak wujud, membenarkan penghala React mengendalikan penghalaan.

Pelaksanaan Kod

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) {
        // If requested file exists, return it; otherwise, return index.html
        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, return index.html
                r.URL.Path = "/"
            }
        }
        fs.ServeHTTP(w, r)
    })

    http.ListenAndServe(":8090", nil)
}

Dalam pelaksanaan ini:

  • Fail yang diminta disemak untuk kewujudan.
  • Jika ia tidak wujud (seperti "/my_frontend_path"), permintaan itu diubah hala ke index.html.
  • Penghala React dalam index.html kemudian mengendalikan penghalaan "/my_frontend_path".

Nota

Kaedah ini mengembalikan index.html untuk fail yang tidak wujud, yang boleh menyebabkan masalah dengan fail seperti "favicon.ico". Dalam kes sedemikian, semakan tambahan boleh ditambah untuk mengehadkan ubah hala hanya kepada sambungan tertentu.

Atas ialah kandungan terperinci Bagaimana untuk mengubah hala Laluan Frontend dalam GoLang untuk Mengelakkan Ralat 404?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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