Ce chapitre introduit le framework Go Iris et comment gérer les fichiers statiques. Parfois dans un projet, il y a des fichiers statiques qui doivent être directement exposés pour un accès utilisateur. Comment cela devrait-il être configuré?

Iris Expose les Fichiers Statiques

func main() {
    app := iris.New()
    // Définir l'icône de la page
    app.Favicon("./resources/favicon.ico")
    // Définir le chemin pour les fichiers statiques et lier la route URL
    app.HandleDir("/assets", iris.Dir("./assets"))

    app.Listen(":8080")
}

La méthode HandleDir accepte un troisième paramètre optionnel DirOptions:

type DirOptions struct {
    // Par défaut est "/index.html". Si le chemin de la requête se termine par **/*/$IndexName, il redirige vers **/*(/), ce qui mène à un autre gestionnaire servi par le framework automatiquement enregistré en tant que gestionnaire d'index si le développeur final ne l'a pas géré manuellement.
    IndexName string
    // Noms de fichiers (valeurs associées) à servir sans demandes client supplémentaires (HTTP/2 Push) lorsque le chemin de requête spécifique (clé de la carte sans le préfixe) n'est pas un répertoire (est un `IndexFile`) ou quand il devrait.
    // PushTargetsRegexp est similaire à `PushTargets` mais il accepte une expression régulière qui sera comparée avec tous les fichiers du répertoire (de manière récursive).
    // `IndexName` devrait être défini.
    // Exemple
    // "/": regexp.MustCompile("((.*).js|(.*).css|(.*).ico)$")
    // Voir aussi `iris.MatchCommonAssets`.
    PushTargetsRegexp map[string]*regexp.Regexp

    // Mise en cache pour activer la mémoire cache et les fichiers pré-compressés.
    Cache DirCacheOptions
    // Quand les fichiers doivent être servis dans un état compressé.
    Compress bool

    // Lister les fichiers dans le répertoire de la requête actuelle si `IndexName` n'est pas trouvé.
    ShowList bool
    // Si `ShowList` est vrai, alors cette fonction sera utilisée pour afficher la liste de fichiers du répertoire demandé actuel (dir) au lieu de celle par défaut.
    DirList DirListFunc

    // Télécharger et enregistrer dans des fichiers locaux.
    Attachments Attachments

    // Validateur optionnel à utiliser pour parcourir chaque ressource de la requête.
    AssetValidator func(ctx *context.Context, name string) bool
}