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
}