首页 > 后端开发 > Golang > 使用 Go 后端服务 React 前端时如何处理 404 错误?

使用 Go 后端服务 React 前端时如何处理 404 错误?

Barbara Streisand
发布: 2024-12-14 15:26:15
原创
148 人浏览过

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.包罗万象的方法

对于纯粹的服务器端解决方案,您可以实现包罗万象的方法,为任何无法识别的路径返回index.html。这确保了前端应用程序已加载,并且路由器可以相应地检测和路由路径。

以下是在 Go 中实现它的方法:

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 后端服务 React 前端时如何处理 404 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

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