在同時使用React 前端應用程式和Go API 的伺服器設定中,存取不存在的前端路由(例如,http://localhost:8090/my_frontend_path)會導致404 錯誤。為了解決這個問題,有幾種方法,其中之一是在伺服器上利用「catch-all」策略。
「Catch-All」方法
這個方法確保對於其他地方未明確處理的任何路徑,伺服器傳回index.html頁面。當前端應用程式載入了 index.html 時,它就可以自行處理路由。
Go 中的簡單實作:
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) { // Return index.html if the requested file doesn't exist 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) } r.URL.Path = "/" } } fs.ServeHTTP(w, r) }) http.ListenAndServe(":8090", nil) }
透過檢查檔案是否存在並回退到如果沒有找到index.html,此程式碼將確保React路由器接管並處理所有路徑的路由。這種方法提供了一個簡單的伺服器端解決方案,可將任何未解析的路由重新導向到前端。
以上是如何處理Go伺服器中前端路由的404錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!