Dans le domaine du développement Web avec Go, le package net/http permet aux développeurs avec des outils puissants pour créer des services Web. Cependant, en ce qui concerne la structure du système de fichiers, le concept de répertoire « racine » peut ne pas être immédiatement clair pour les nouveaux arrivants sur Go. Cet article vise à faire la lumière sur ce sujet.
Contrairement aux serveurs de fichiers statiques, le serveur Web net/http de Go fonctionne à l'aide de gestionnaires. Ces gestionnaires sont responsables du traitement des requêtes HTTP et de la génération des réponses. Pour mapper un gestionnaire à une URL spécifique, les développeurs utilisent les fonctions Handle() ou HandleFunc().
Cependant, Go inclut une fonction FileServer() dans le package http, qui permet la création d'un gestionnaire qui sert des fichiers statiques à partir d'un répertoire spécifié. Ce répertoire devient effectivement la « racine » pour diffuser du contenu statique.
Lors de la spécification du chemin d'accès au répertoire racine dans FileServer( ), il existe deux options :
Par exemple, le code suivant spécifie un serveur de fichiers statiques avec un chemin relatif :
http.Handle("/", http.FileServer(http.Dir("/tmp")))
Cela servira les fichiers statiques du "/tmp", en supposant qu'il se trouve dans le répertoire de travail actuel.
Pour présenter une application complète, considérez le code suivant extrait :
package main import ( "log" "net/http" ) func main() { // Static fileserver with a root of "/tmp" http.Handle("/", http.FileServer(http.Dir("/tmp"))) log.Fatal(http.ListenAndServe(":8080", nil)) }
Lorsque cette application est exécutée, elle configure un serveur Web statique qui sert les fichiers statiques à partir du "/tmp", en le mappant à l'URL racine /.
Pour obtenir un mappage d'URL plus complexe, allez fournit la fonction StripPrefix(). Cette fonction permet de modifier l'URL de la requête avant qu'elle ne soit traitée par le FileServer. Par exemple :
http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))
Dans ce cas, les URL avec le préfixe "/tmpfiles/" verront ce préfixe supprimé et le chemin restant sera utilisé pour accéder aux fichiers statiques dans le répertoire "/tmp".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!