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
}