Este capítulo presenta el marco Go Iris y cómo manejar archivos estáticos. A veces, en un proyecto, hay algunos archivos estáticos que deben estar directamente expuestos para que los usuarios puedan acceder a ellos. ¿Cómo se debería configurar esto?

Iris Expone Archivos Estáticos

func main() {
    app := iris.New()
	// Establecer ícono de página
    app.Favicon("./resources/favicon.ico")
	// Establecer la ruta para los archivos estáticos y vincular la ruta URL
    app.HandleDir("/assets", iris.Dir("./assets"))

    app.Listen(":8080")
}

El método HandleDir acepta un tercer parámetro opcional DirOptions:

type DirOptions struct {
    // El valor predeterminado es "/index.html". Si la ruta de la solicitud termina con **/*/$IndexName, se redirige a **/*(/),
    // lo que conduce a otro controlador que es servido automáticamente por el marco registrado como controlador de índice
    // si el desarrollador final no lo maneja manualmente.
    IndexName string
    // Objetivos de envío de archivos (valores mapeados) para servir sin solicitudes adicionales del cliente (HTTP/2 Push) cuando la ruta de solicitud específica (clave del mapa sin el prefijo)
    // la ruta solicitada (la clave del mapa sin el prefijo) no es un directorio (es un `IndexFile`) o cuando debe.
// PushTargetsRegexp es similar a `PushTargets` pero acepta una expresión regular que se comparará con todos los archivos en el directorio (de forma recursiva).
// Debería establecerse `IndexName`.//
// Ejemplo
// "/": regexp.MustCompile("((.*).js|(.*).css|(.*).ico)$")
// Ver también `iris.MatchCommonAssets`.
PushTargetsRegexp map[string]*regexp.Regexp

// Caching para habilitar caché en memoria y archivos precomprimidos.
Cache DirCacheOptions
// Cuando los archivos deben servirse en un estado comprimido.
Compress bool

// Listar los archivos en el directorio de solicitud actual si no se encuentra `IndexName`.
ShowList bool
// Si `ShowList` es true, entonces esta función se usará para mostrar la lista de archivos del directorio solicitado actual (dir)
// en lugar de la predeterminada.
DirList DirListFunc

// Descargar y guardar en archivos locales.
Attachments Attachments

// Validador opcional para usar en cada recurso de solicitud.
AssetValidator func(ctx *context.Context, name string) bool
}