Cette tâche est très simple avec le package Golang net / http.
Tout ce que vous devez faire est:
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
en supposant que les fichiers statiques se trouvent dans le dossier nommé static
dans le répertoire racine du projet.
S'il est dans un dossier static
, vous aurez un index.html
appel de fichier http://localhost:3000/
qui entraînera le rendu de ce fichier d'index au lieu de lister tous les fichiers disponibles.
De plus, l'appel de tout autre fichier de ce dossier (par exemple http://localhost:3000/clients.html
) affichera ce fichier, correctement rendu par le navigateur (au moins Chrome, Firefox et Safari :))
MISE À JOUR: diffusion de fichiers à partir d'une URL différente de "/"
Si vous voulez servir des fichiers, dites à partir du dossier ./public
sous l'URL: localhost:3000/static
vous devez utiliser une fonction supplémentaire : func StripPrefix(prefix string, h Handler) Handler
comme ceci:
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
http.ListenAndServe(":3000", nil)
}
Grâce à cela, tous vos fichiers ./public
sont disponibles souslocalhost:3000/static
Sans http.StripPrefix
fonction, si vous essayez d'accéder au fichier localhost:3000/static/test.html
, le serveur le recherche dans./public/static/test.html
Cela est dû au fait que le serveur traite l'URI entier comme un chemin relatif vers le fichier.
Heureusement, il est facilement résolu avec la fonction intégrée.
/static/
pas/static
?