Questo capitolo introduce il framework Go Iris e come gestire i file statici. A volte in un progetto, ci sono alcuni file statici che devono essere direttamente esposti per l'accesso degli utenti. Come dovrebbe essere impostato ciò?

Iris Espone File Statici

func main() {
    app := iris.New()
	// Imposta l'icona della pagina
    app.Favicon("./resources/favicon.ico")
	// Imposta il percorso per i file statici e associa il percorso URL
    app.HandleDir("/assets", iris.Dir("./assets"))

    app.Listen(":8080")
}

Il metodo HandleDir accetta un terzo parametro opzionale DirOptions:

type DirOptions struct {
    // Default è "/index.html". Se il percorso della richiesta termina con **/*/$IndexName, viene reindirizzato a **/*(/), 
    // il che porta a un altro gestore servito automaticamente dal framework registrato come gestore dell'indice
    // se lo sviluppatore finale non lo gestisce manualmente.
    IndexName string
    // I file da PushTargets (valori mappati) vengono serviti senza ulteriori richieste del client (HTTP/2 Push) quando il percorso della richiesta specifica (chiave della mappa senza il prefisso)
    // percorso richiesto (la chiave della mappa senza il prefisso) non è una directory (è un `IndexFile`) o quando è necessario.
    // PushTargetsRegexp è simile a `PushTargets` ma accetta un'espressione regolare che sarà confrontata con tutti i file presenti nella directory (in modo ricorsivo).
    // `IndexName` dovrebbe essere impostato.
    // Esempio
    // "/": regexp.MustCompile("((.*).js|(.*).css|(.*).ico)$")
    // Vedi anche `iris.MatchCommonAssets`.
    PushTargetsRegexp map[string]*regexp.Regexp

    // Cache per abilitare la cache in memoria e i file precompressi.
    Cache DirCacheOptions
    // Quando i file devono essere serviti in uno stato compresso.
    Compress bool

    // Elencare i file nella directory richiesta nella richiesta corrente se `IndexName` non viene trovato.
    ShowList bool
    // Se `ShowList` è true, allora sarà utilizzata questa funzione per visualizzare l'elenco dei file della directory richiesta corrente (dir)
    // invece di quella predefinita.
    DirList DirListFunc

    // Scarica e salva su file locali.
    Attachments Attachments

    // Validatore opzionale da utilizzare per scorrere ogni risorsa della richiesta.
    AssetValidator func(ctx *context.Context, name string) bool
}