Heim >Backend-Entwicklung >Golang >Wie gehe ich mit 404-Fehlern für Frontend-Routen in einem Go-Server um?
In einem Server-Setup mit sowohl einer React-Frontend-App als auch einer Go-API, Zugriff auf ein nicht vorhandenes Frontend Route (z. B. http://localhost:8090/my_frontend_path) führt zu einem 404-Fehler. Um dieses Problem anzugehen, gibt es mehrere Ansätze, von denen einer die Verwendung einer „Catch-All“-Strategie auf dem Server ist.
„Catch-All“-Ansatz
Dies Die Methode stellt sicher, dass der Server für jeden Pfad, der nicht explizit an anderer Stelle behandelt wird, die Seite index.html zurückgibt. Da die Frontend-Anwendung mit index.html geladen wird, kann sie das Routing selbst übernehmen.
Eine einfache Implementierung in 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) }
Durch Überprüfung der Existenz der Datei und Zurückgreifen auf Wenn index.html nicht gefunden wird, stellt dieser Code sicher, dass der React-Router das Routing für alle Pfade übernimmt und übernimmt. Dieser Ansatz bietet eine einfache serverseitige Lösung, um alle ungelösten Routen an das Frontend umzuleiten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit 404-Fehlern für Frontend-Routen in einem Go-Server um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!