Heim >Backend-Entwicklung >Golang >Wie leite ich Frontend-Routen in GoLang um, um 404-Fehler zu vermeiden?
Beim Zugriff auf Pfade wie „/my_frontend_path“ direkt im Browser gibt GoLang stattdessen einen 404-Fehler zurück das Routing an den Frontend-React-Router zu delegieren.
Das Hauptproblem besteht darin, dass beim Zugriff auf solche Pfade vor der Initialisierung des React-Routers der Server die Anfrage verarbeitet und den Fehler zurückgibt.
A Es kann ein einfacher serverseitiger „Catch-all“-Ansatz implementiert werden, um alle nicht unterstützten Pfade zum Frontend-Router umzuleiten. Bei diesem Ansatz wird die Seite index.html zurückgegeben, wenn die angeforderte Datei nicht vorhanden ist, sodass der React-Router das Routing übernehmen kann.
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) { // If requested file exists, return it; otherwise, return index.html 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, return index.html r.URL.Path = "/" } } fs.ServeHTTP(w, r) }) http.ListenAndServe(":8090", nil) }
In dieser Implementierung:
Diese Methode gibt index.html zurück für Dateien, die nicht existieren, was zu Problemen mit Dateien wie „favicon.ico“ führen kann. In solchen Fällen können zusätzliche Prüfungen hinzugefügt werden, um die Weiterleitung nur auf bestimmte Erweiterungen zu beschränken.
Das obige ist der detaillierte Inhalt vonWie leite ich Frontend-Routen in GoLang um, um 404-Fehler zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!