Este capítulo apresenta o framework Go Iris e como lidar com arquivos estáticos. Às vezes, em um projeto, há alguns arquivos estáticos que precisam ser diretamente expostos para acesso do usuário. Como isso deve ser configurado?

Iris Expose arquivos estáticos

func main() {
    app := iris.New()
	// Definir ícone da página
    app.Favicon("./resources/favicon.ico")
	// Definir o caminho para os arquivos estáticos e vincular a rota URL
    app.HandleDir("/assets", iris.Dir("./assets"))

    app.Listen(":8080")
}

O método HandleDir aceita um terceiro parâmetro opcional DirOptions:

type DirOptions struct {
    // O padrão é "/index.html". Se o caminho da solicitação terminar com **/*/$IndexName, ele será redirecionado para **/*(/),
    // o que leva a outro manipulador que está sendo servido pelo framework automaticamente registrado como o manipulador de índice
    // se o desenvolvedor final não o manipulou manualmente.
    IndexName string
    // Nomes de arquivos (valores mapeados) a serem servidos sem solicitações adicionais do cliente (HTTP/2 Push) quando o caminho da solicitação específica (chave do mapa sem o prefixo)
    // caminho solicitado (a chave do mapa sem o prefixo) não é um diretório (é um `IndexFile`) ou quando deveria.
    // PushTargetsRegexp é como `PushTargets` mas aceita uma expressão regular que será comparada com todos os arquivos no diretório (recursivamente).
    // `IndexName` deve ser configurado.
    // Exemplo
    // "/": regexp.MustCompile("((.*).js|(.*).css|(.*).ico)$")
    // Veja também `iris.MatchCommonAssets`.
    PushTargetsRegexp map[string]*regexp.Regexp

    // Cache para habilitar cache em memória e arquivos pré-comprimidos.
    Cache DirCacheOptions
    // Quando os arquivos devem ser servidos em um estado comprimido.
    Compress bool

    // Listar os arquivos no diretório da solicitação atual se `IndexName` não for encontrado.
    ShowList bool
    // Se `ShowList` for verdadeiro, então essa função será usada para exibir a lista de arquivos do diretório solicitado atual (dir)
    // em vez da padrão.
    DirList DirListFunc

    // Baixar e salvar em arquivos locais.
    Attachments Attachments

    // Validador opcional a ser usado para percorrer cada recurso da solicitação.
    AssetValidator func(ctx *context.Context, name string) bool
}