Questo compito è molto semplice con il pacchetto Golang net / http.
Tutto quello che devi fare è:
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
supponendo che i file statici si trovino nella cartella denominata staticnella directory principale del progetto.
Se è nella cartella static, avrai una index.htmlchiamata di file http://localhost:3000/che comporterà il rendering di quel file indice invece di elencare tutti i file disponibili.
Inoltre, chiamare qualsiasi altro file in quella cartella (ad esempio http://localhost:3000/clients.html) mostrerà quel file, correttamente reso dal browser (almeno Chrome, Firefox e Safari :))
AGGIORNAMENTO: pubblicazione di file da un URL diverso da "/"
Se vuoi servire i file, dì dalla cartella ./publicsotto l'URL: localhost:3000/staticdevi usare una funzione aggiuntiva : func StripPrefix(prefix string, h Handler) Handlercome questa:
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
http.ListenAndServe(":3000", nil)
}
Grazie a ciò, tutti i tuoi file da ./publicsono disponibili sottolocalhost:3000/static
Senza la http.StripPrefixfunzione, se provassi ad accedere al file localhost:3000/static/test.html, il server lo cercherebbe in./public/static/test.html
Questo perché il server considera l'intero URI come un percorso relativo del file.
Fortunatamente, è facilmente risolvibile con la funzione integrata.
/static/non lo è/static?