Maison >développement back-end >Golang >Journalisation de l'état ServeHTTP personnalisée Golang
l'éditeur php Banana vous présente la journalisation du statut ServeHTTP personnalisée de Golang. Dans Golang, la fonction ServeHTTP est l'une des fonctions clés utilisées pour gérer les requêtes HTTP. En personnalisant la fonction ServeHTTP, nous pouvons enregistrer et suivre les informations d'état de chaque requête pour mieux comprendre et déboguer notre application. Cet article présentera en détail comment personnaliser la fonction ServeHTTP dans Golang et implémenter la fonction de journalisation de l'état pour améliorer notre efficacité de développement et la stabilité de nos applications. Que vous soyez débutant ou développeur expérimenté, cet article vous aidera à mieux comprendre et appliquer la fonction ServeHTTP de Golang.
Je construis mon propre framework Web et je rencontre un problème, lorsque j'essaie d'enregistrer une demande avec un code d'état de réponse, j'obtiens l'erreur : Adresse mémoire invalide ou déréférencement de pointeur nul p>
Ma fonction ServeHTTP :
func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) { handler := r.getHandler(req.Method, req.URL.Path) if handler == nil { notFoundHandler(w, req) return } done := make(chan struct{}) reqStruct := newReqStruct(w, req) go func() { handler(reqStruct) done <- struct{}{} close(done) }() <-done logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
}
Cette ligne :
logger.logRequest(req.URL.Path, req.Method, req.Response.StatusCode)
req.Response
Ne sera renseigné que pour les redirections HTTP. Dans ce cas, ce sera zéro.
Si vous souhaitez capturer le code de réponse, écrivez un rédacteur de réponse wrapper et implémentez WriteHeader
pour capturer le code de réponse.
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!