Dans une configuration de serveur avec à la fois une application frontale React et une API Go, accès à une interface inexistante route (par exemple, http://localhost:8090/my_frontend_path) entraîne une erreur 404. Pour résoudre ce problème, il existe plusieurs approches, dont l'une consiste à utiliser une stratégie « fourre-tout » sur le serveur.
Approche « Catch-All »
Cette La méthode garantit que pour tout chemin non explicitement géré ailleurs, le serveur renvoie la page index.html. Comme l'application frontend est chargée avec index.html, elle peut alors gérer elle-même le routage.
Une implémentation simple dans 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) }
En vérifiant l'existence du fichier et en revenant à index.html s'il n'est pas trouvé, ce code garantit que le routeur React prend le relais et gère le routage pour tous les chemins. Cette approche fournit une solution simple côté serveur pour rediriger toutes les routes non résolues vers le frontend.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!