Ir al contenido

Servir archivos estáticos

Echo puede servir assets estáticos como imágenes, JavaScript, CSS, PDFs y fuentes desde el filesystem o desde un filesystem embebido.

Echo usa os.DirFS(".") como filesystem por defecto, con raíz en el directorio de trabajo actual. Para cambiarlo, establece el campo Echo#Filesystem:

e := echo.New()
e.Filesystem = os.DirFS("assets")

Consulta middleware Static.

Echo#Static(prefix, root string) registra una ruta que sirve archivos estáticos bajo un prefijo de path desde el directorio raíz dado.

Sirve cualquier archivo de assets bajo /static/*. Un request a /static/js/main.js sirve assets/js/main.js:

e := echo.New()
e.Static("/static", "assets")

Sirve cualquier archivo de assets bajo /*. Un request a /js/main.js sirve assets/js/main.js:

e := echo.New()
e.Static("/", "assets")

Los archivos estáticos se pueden servir desde cualquier fs.FS, incluido un embed.FS. Usa echo.MustSubFS para que los archivos servidos tengan raíz en el subdirectorio correcto: un embed.FS incluye sus subdirectorios como entradas propias.

//go:embed "assets/images"
var images embed.FS
func main() {
e := echo.New()
e.StaticFS("/images", echo.MustSubFS(images, "assets/images"))
sc := echo.StartConfig{Address: ":1323"}
if err := sc.Start(context.Background(), e); err != nil {
e.Logger.Error("failed to start server", "error", err)
}
}

Echo#File(path, file string) registra una ruta que sirve un único archivo estático.

Sirve una página index desde public/index.html:

e.File("/", "public/index.html")

Sirve un favicon desde app/assets/favicon.ico:

e := echo.New()
e.Filesystem = os.DirFS("/")
e.File("/favicon.ico", "app/assets/favicon.ico") // The file path must not have a leading slash.