首頁 >後端開發 >Golang >如何處理Go伺服器中前端路由的404錯誤?

如何處理Go伺服器中前端路由的404錯誤?

Barbara Streisand
Barbara Streisand原創
2024-12-24 14:39:15192瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn