Essa tarefa é muito fácil com o pacote Golang net / http.
Tudo que você precisa fazer é:
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
assumindo que os arquivos estáticos estão em uma pasta nomeada staticno diretório raiz do projeto.
Se estiver na pasta static, você terá uma index.htmlchamada de arquivo http://localhost:3000/que resultará na renderização desse arquivo de índice em vez de listar todos os arquivos disponíveis.
Além disso, chamar qualquer outro arquivo nessa pasta (por exemplo http://localhost:3000/clients.html) mostrará esse arquivo, devidamente renderizado pelo navegador (pelo menos Chrome, Firefox e Safari :))
ATUALIZAÇÃO: disponibilizando arquivos de url diferente de "/"
Se você quiser servir arquivos, diga da pasta ./publicem url: localhost:3000/staticVocê deve usar uma função adicional : func StripPrefix(prefix string, h Handler) Handlerassim:
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
http.ListenAndServe(":3000", nil)
}
Graças a isso, todos os seus arquivos de ./publicestão disponíveis emlocalhost:3000/static
Sem http.StripPrefixfunção, se você tentar acessar o arquivo localhost:3000/static/test.html, o servidor irá procurá-lo em./public/static/test.html
Isso ocorre porque o servidor trata todo o URI como um caminho relativo para o arquivo.
Felizmente, isso é facilmente resolvido com a função integrada.
/static/não é/static?