首页 > 后端开发 > Golang > 如何处理Go服务器中前端路由的404错误?

如何处理Go服务器中前端路由的404错误?

Barbara Streisand
发布: 2024-12-24 14:39:15
原创
205 人浏览过

How to Handle 404 Errors for Frontend Routes in a Go Server?

处理 Go 中未解析的前端路由的 404 错误

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板