首頁 >後端開發 >Golang >使用 Go 後端服務 React 前端時如何處理 404 錯誤?

使用 Go 後端服務 React 前端時如何處理 404 錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-14 15:26:15150瀏覽

How to Handle 404 Errors When Serving a React Frontend with a Go Backend?

如何在Go 應用中實現前端路由

問題:

問題:

訪問特定物件時對於服務於React 前端的Go 應用程序,直接在瀏覽器中使用路徑(/my_frontend_path),您會遇到404 錯誤。這是因為 Go 伺服器無法識別該路徑,導致伺服器請求該頁面。

解決方案:

將無法辨識的路徑委託給前端React路由器,您可以實現以下幾種方法之一:

1.雜湊歷史記錄

在連結的問題中建議使用雜湊歷史記錄,並涉及在客戶端路由的URL 中新增#。這可確保伺服器不會解釋路徑並允許前端路由器處理它。

2.包羅萬象的方法

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)
}
對於純粹的伺服器端解決方案,您可以實現包羅萬象的方法,為任何無法識別的路徑返回index.html。這確保了前端應用程式已加載,並且路由器可以相應地檢測和路由路徑。

以下是在Go 中實現它的方法:

注意: 此方法將為所有無法識別的路徑返回index.html,包括不存在的文件。如果這會帶來問題,您可以考慮新增限制,例如檢查檔案副檔名。

以上是使用 Go 後端服務 React 前端時如何處理 404 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn