Esa tarea es muy fácil con el paquete Golang net / http.
Todo lo que necesitas hacer es:
package main
import (
"net/http"
)
func main() {
http.Handle("/", http.FileServer(http.Dir("./static")))
http.ListenAndServe(":3000", nil)
}
asumiendo que los archivos estáticos están en la carpeta nombrada staticen el directorio raíz del proyecto.
Si está en la carpeta static, tendrá una index.htmlllamada de archivo http://localhost:3000/que dará como resultado la representación de ese archivo de índice en lugar de enumerar todos los archivos disponibles.
Además, llamar a cualquier otro archivo en esa carpeta (por ejemplo http://localhost:3000/clients.html) mostrará ese archivo, correctamente representado por el navegador (al menos Chrome, Firefox y Safari :))
ACTUALIZACIÓN: entrega de archivos desde una URL diferente a "/"
Si desea servir archivos, diga desde la carpeta ./publicdebajo de la URL: localhost:3000/staticdebe usar una función adicional : func StripPrefix(prefix string, h Handler) Handlercomo esta:
package main
import (
"net/http"
)
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./public"))))
http.ListenAndServe(":3000", nil)
}
Gracias a eso, todos sus archivos de ./publicestán disponibles enlocalhost:3000/static
Sin http.StripPrefixfunción, si intenta acceder al archivo localhost:3000/static/test.html, el servidor lo buscará en./public/static/test.html
Esto se debe a que el servidor trata el URI completo como una ruta relativa al archivo.
Afortunadamente, se resuelve fácilmente con la función incorporada.
/static/no lo es/static?