Maison > développement back-end > Golang > Comment gérer les erreurs 404 lors de la diffusion d'un frontend React avec un backend Go ?

Comment gérer les erreurs 404 lors de la diffusion d'un frontend React avec un backend Go ?

Barbara Streisand
Libérer: 2024-12-14 15:26:15
original
148 Les gens l'ont consulté

How to Handle 404 Errors When Serving a React Frontend with a Go Backend?

Comment implémenter le routage frontend dans les applications Go

Problème :

Lors de l'accès à un path (/my_frontend_path) directement dans votre navigateur pour une application Go servant l'interface React, vous rencontrez une erreur 404. En effet, le serveur Go ne reconnaît pas le chemin, ce qui entraîne une requête de la page auprès du serveur.

Solution :

Déléguer les chemins non reconnus au frontend React Router, vous pouvez mettre en œuvre l'une des plusieurs approches suivantes :

1. Historique de hachage

L'historique de hachage est recommandé dans la question liée et implique l'ajout de # à l'URL pour le routage côté client. Cela garantit que le serveur n'interprète pas le chemin et permet au routeur frontal de le gérer.

2. Approche fourre-tout

Pour une solution purement côté serveur, vous pouvez implémenter une approche fourre-tout qui renvoie index.html pour tout chemin non reconnu. Cela garantit que l'application frontale est chargée et que le routeur peut détecter et acheminer le chemin en conséquence.

Voici comment l'implémenter dans Go :

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 the requested file exists then return if; otherwise return index.html (fileserver default page)
        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 so we return the default (resolves to index.html)
                r.URL.Path = "/"
            }
        }
        fs.ServeHTTP(w, r)
    })
    http.ListenAndServe(":8090", nil)
}
Copier après la connexion

Remarque : Cette approche renverra index.html pour tous les chemins non reconnus, y compris les fichiers inexistants. Vous pouvez envisager d'ajouter des limitations, telles que la vérification des extensions de fichiers, si cela pose un problème.

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