Diagnostic des erreurs 404 avec le service de fichiers HTTP
Dans les applications HTTP, il est crucial de gérer efficacement les erreurs pour offrir une expérience utilisateur fiable. Lors du traitement de fichiers à l'aide de http.FileServer, des requêtes inattendues pour des fichiers inexistants peuvent survenir, laissant la console du serveur dépourvue de journaux d'erreurs.
Pour résoudre ce problème, nous pouvons étendre la fonctionnalité de gestionnaire fournie par http.StripPrefix() et http. .FileServer(). En englobant ces gestionnaires dans notre logique personnalisée, nous obtenons la possibilité d'intercepter les réponses HTTP et d'inspecter leurs codes d'état.
Pour y parvenir, nous avons besoin d'une méthode pour capturer le code d'état de la réponse, car il n'est pas directement accessible avec http.ResponseWriter. Nous introduisons un wrapper, StatusRespWr, qui intègre http.ResponseWriter et stocke le code d'état en interne.
Notre gestionnaire personnalisé, wrapHandler(), intercepte la demande et la réponse. Il utilise StatusRespWr pour récupérer le code d'état une fois la demande traitée par le gestionnaire d'origine. Si le code d'état indique une erreur (400 ou plus), nous enregistrons l'incident ainsi que le chemin du fichier demandé.
Pour implémenter cette fonctionnalité de journalisation, nous encapsulons le gestionnaire d'origine et l'enregistrons comme indiqué dans le extrait de code ci-dessous :
<code class="go">http.HandleFunc("/o/", wrapHandler( http.StripPrefix("/o", http.FileServer(http.Dir("/test")))))</code>
En exécutant ce serveur de fichiers modifié, nous recevons désormais des journaux informatifs pour les fichiers inexistants, garantissant ainsi une visibilité sur les problèmes potentiels :
<code class="text">2015/12/01 11:47:40 Error status code: 404 when serving path: /o/sub/b.txt2</code>
Avec cette amélioration, les administrateurs de serveur peut surveiller et résoudre de manière proactive les problèmes potentiels liés à des URL incorrectes ou à des fichiers manquants.
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!