Pular para o conteúdo

Servindo arquivos estáticos

Echo pode servir assets estáticos como imagens, JavaScript, CSS, PDFs e fontes a partir do filesystem ou de um filesystem incorporado.

Echo usa os.DirFS(".") como seu filesystem padrão, com raiz no diretório de trabalho atual. Para alterá-lo, defina o campo Echo#Filesystem:

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

Veja middleware Static.

Echo#Static(prefix, root string) registra uma rota que serve arquivos estáticos sob um prefixo de caminho a partir do diretório raiz informado.

Sirva qualquer arquivo de assets sob /static/*. Um request para /static/js/main.js serve assets/js/main.js:

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

Sirva qualquer arquivo de assets sob /*. Um request para /js/main.js serve assets/js/main.js:

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

Arquivos estáticos podem ser servidos a partir de qualquer fs.FS, incluindo um embed.FS. Use echo.MustSubFS para que os arquivos servidos tenham raiz no subdiretório correto — um embed.FS inclui seus subdiretórios como entradas próprias.

//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 uma rota que serve um único arquivo estático.

Sirva uma página index de public/index.html:

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

Sirva um favicon de 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.