Maison > développement back-end > Golang > Comment servir à la fois une page d'accueil et du contenu statique à partir du répertoire racine dans Go ?

Comment servir à la fois une page d'accueil et du contenu statique à partir du répertoire racine dans Go ?

Linda Hamilton
Libérer: 2024-12-18 11:05:10
original
118 Les gens l'ont consulté

How to Serve Both a Homepage and Static Content from the Root Directory in Go?

Servir une page d'accueil et du contenu statique à partir de la racine dans Go

Dans Go, servir à la fois du contenu statique et une page d'accueil à partir du répertoire racine tout en gérant des Les URL nécessitent une approche sur mesure. Par défaut, l'enregistrement d'un gestionnaire pour le chemin racine ("/") entre en conflit avec la diffusion de contenu statique à partir du même répertoire.

Pour résoudre ce problème, une option consiste à utiliser une implémentation alternative de FileServer qui vérifie l'existence de un fichier avant de tenter de le servir. Pour les fichiers non présents, il peut s'en remettre au gestionnaire de la page d'accueil ou renvoyer une erreur 404.

Le code suivant illustre cette approche :

package main

import (
    "fmt"
    "net/http"
    "os"
)

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "HomeHandler")
}

func exists(path string) bool {
    _, err := os.Stat(path)
    return !os.IsNotExist(err)
}

func FileServerWithFallback(dir string) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        path := dir + r.URL.Path
        if exists(path) {
            http.ServeFile(w, r, path)
            return
        }
    }
}

func main() {
    http.HandleFunc("/", HomeHandler) // homepage
    http.Handle("/static/", FileServerWithFallback("./static"))

    http.ListenAndServe(":8080", nil)
}
Copier après la connexion

Dans ce code, la fonction exist vérifie si un le fichier existe à un chemin donné. Le gestionnaire FileServerWithFallback sert un fichier s'il existe dans le répertoire fourni. Sinon, cela permet à la demande d'être transmise au gestionnaire de page d'accueil.

En utilisant cette implémentation personnalisée de FileServer, le contenu statique peut être servi à partir du répertoire racine tout en permettant au gestionnaire de page d'accueil d'être invoqué comme prévu.

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