Maison > développement back-end > Golang > Comment gérer les erreurs 404 pour les routes frontales dans un serveur Go ?

Comment gérer les erreurs 404 pour les routes frontales dans un serveur Go ?

Barbara Streisand
Libérer: 2024-12-24 14:39:15
original
186 Les gens l'ont consulté

How to Handle 404 Errors for Frontend Routes in a Go Server?

Gestion des erreurs 404 pour les routes frontales non résolues dans Go

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal