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 static
en el directorio raíz del proyecto.
Si está en la carpeta static
, tendrá una index.html
llamada 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 ./public
debajo de la URL: localhost:3000/static
debe usar una función adicional : func StripPrefix(prefix string, h Handler) Handler
como 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 ./public
están disponibles enlocalhost:3000/static
Sin http.StripPrefix
funció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
?