如何在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中文網其他相關文章!