在同时使用 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中文网其他相关文章!