recherche
Maisondéveloppement back-endGolangComment le serveur « net/http » de Go gère-t-il le service de fichiers statiques sans répertoire racine fixe ?

How Does Go's `net/http` Server Handle Static File Serving Without a Fixed Root Directory?

Dévoilement du répertoire « Root » dans le serveur Web de Go

Dans le serveur Web net/http de Go, le concept de « racine » fixe le répertoire de service des fichiers est absent. Au lieu de cela, des gestionnaires sont utilisés pour répondre aux requêtes d'URL, offrant ainsi plus de flexibilité et de contrôle sur la livraison du contenu.

Mappage des gestionnaires

Un gestionnaire est une fonction qui traite une requête HTTP. et génère la réponse correspondante. Les URL sont associées à des gestionnaires utilisant les fonctions Handle() ou HandleFunc(). Lorsqu'une requête HTTP est reçue, le serveur fait correspondre l'URL demandée avec les gestionnaires enregistrés pour déterminer quel gestionnaire doit gérer la demande.

Fichiers statiques

Pour servir des fichiers statiques , Go fournit une fonction FileServer(). Il renvoie un gestionnaire qui sert les fichiers d'un répertoire "racine" spécifié. Ce répertoire peut être spécifié comme chemin absolu ou relatif.

Chemins absolus

Si un chemin absolu est utilisé avec FileServer(), le répertoire "racine" est sans ambiguïté .

Chemins relatifs

Chemins relatifs, cependant, dépendent du répertoire de travail actuel, qui est normalement le répertoire à partir duquel l'application a été démarrée. Par exemple :

http.Handle("/", http.FileServer(http.Dir("/tmp")))

Cela attribue un gestionnaire pour servir les fichiers du répertoire "/tmp", mappés à l'URL racine "/". Par conséquent, la réponse à "/mydoc.txt" sera le fichier "/tmp/mydoc.txt".

Mappage complexe

Des scénarios de cartographie plus complexes peuvent être réalisé avec la fonction StripPrefix(), qui modifie le chemin de l'URL de la requête avant qu'il ne soit transmis à FileServer(). Cela permet de servir des fichiers à partir d'un répertoire ou d'un chemin différent de celui de l'URL racine.

Exemple :

http.Handle("/tmpfiles/", http.StripPrefix("/tmpfiles/", http.FileServer(http.Dir("/tmp"))))

Cette configuration sert les fichiers de "/tmp" sous le chemin d'URL "/tmpfiles/" ; une requête pour "/tmpfiles/mydoc.txt" répondra avec le fichier "/tmp/mydoc.txt".

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!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Erreurs de journalisation efficacement dans les applications GOErreurs de journalisation efficacement dans les applications GOApr 30, 2025 am 12:23 AM

La journalisation d'erreur d'application GO efficace nécessite d'équilibrer les détails et les performances. 1) L'utilisation de packages de journaux standard est simple mais manque de contexte. 2) Logrus fournit des journaux structurés et des champs personnalisés. 3) ZAP combine les performances et les journaux structurés, mais nécessite plus de paramètres. Un système de journalisation d'erreur complet doit inclure l'enrichissement des erreurs, le niveau de journal, la journalisation centralisée, les considérations de performances et les modes de gestion des erreurs.

Interfaces vides (interface {}) dans Go: cas d'utilisation et considérationsInterfaces vides (interface {}) dans Go: cas d'utilisation et considérationsApr 30, 2025 am 12:23 AM

Vide InterfacesIngoAreInterfaces avec des étages, représentant l'analyse de la valeur et devait être informé de la maintenance

Comparaison des modèles de concurrence: allez par rapport aux autres languesComparaison des modèles de concurrence: allez par rapport aux autres languesApr 30, 2025 am 12:20 AM

Go'sconcurrencyModeLelisunieDuetOtsUseofgoroutinesandChannels, offrant auxquels l'offrand de poids et de la responsabilité approfondie axés

Modèle de concurrence de Go: Goroutines et canaux expliquésModèle de concurrence de Go: Goroutines et canaux expliquésApr 30, 2025 am 12:04 AM

Go'sconcurrencyModeLuSeSGoroutinesandChannelStomageConCurrentProgrammingation efficace.1)

Interfaces et polymorphisme en Go: réutiliser le codeInterfaces et polymorphisme en Go: réutiliser le codeApr 29, 2025 am 12:31 AM

Interfaces andPolymorphisMingoenhanceCodeRelevitality andmainaipability.1) Définir les interfaces de théâtre.

Quel est le rôle de la fonction 'init' dans GO?Quel est le rôle de la fonction 'init' dans GO?Apr 29, 2025 am 12:28 AM

TheinitfonctioningorunsautomAticalement pour que la façon dont la convention est en train

Composition d'interface dans Go: construire des abstractions complexesComposition d'interface dans Go: construire des abstractions complexesApr 29, 2025 am 12:24 AM

Les combinaisons d'interface créent des abstractions complexes dans la programmation GO en décomposant les fonctions en petites interfaces focalisées. 1) Définissez le lecteur, l'écrivain et les interfaces plus étroites. 2) Créez des types complexes tels que le fichier et le réseau de réseaux en combinant ces interfaces. 3) Utilisez la fonction ProcessData pour montrer comment gérer ces interfaces combinées. Cette approche améliore la flexibilité du code, la testabilité et la réutilisabilité, mais il faut prendre soin d'éviter une fragmentation excessive et une complexité combinatoire.

Pièges et considérations potentielles lors de l'utilisation des fonctions d'initiés dans GoPièges et considérations potentielles lors de l'utilisation des fonctions d'initiés dans GoApr 29, 2025 am 12:02 AM

InitisctionsingoaReAutomAticalement compte tenu de la fin de la manière

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !