Maison >développement back-end >Golang >Que signifie la sortie de débogage Go/Gin - (x gestionnaires)
l'éditeur php Youzi vous expliquera la signification de "(x handlers)" dans la sortie de débogage Go/Gin. Dans le framework Gin du langage Go, "(x handlers)" représente le nombre de middlewares traversés par la requête. Le middleware est un mécanisme du framework Gin pour le traitement des requêtes. Il peut effectuer certaines opérations avant ou après que la requête atteigne la fonction de traitement de routage. Chaque middleware transmet la requête au middleware suivant jusqu'à ce qu'il atteigne finalement la fonction de gestionnaire. Le « x » dans « (x handlers) » représente le nombre de middlewares, ce qui peut aider les développeurs à comprendre combien de middlewares ont été traités lors du traitement des requêtes. En observant le nombre de middlewares, les développeurs peuvent mieux comprendre le processus de traitement des requêtes et faciliter le débogage et l'optimisation du code. J'espère que cette réponse vous aidera !
Dans la sortie de débogage go/gin ci-dessous, quelle est la signification de (5 gestionnaires). Comme vous pouvez le constater, j'ai évidemment plus de 5 handlers.
[GIN-debug] GET / --> .../handlers.APIDetail (5 handlers) [GIN-debug] POST /signup --> .../handlers.SignUp (5 handlers) [GIN-debug] POST /signin --> .../handlers.SignIn (5 handlers) [GIN-debug] POST /refresh-token --> .../handlers.RefreshToken (5 handlers) [GIN-debug] POST /verify-email --> .../handlers.VerifyEmailVerificationToken (5 handlers) [GIN-debug] POST /resend-verification-email --> .../handlers.ResendEmailVerificationEmail (5 handlers) [GIN-debug] POST /reset-password --> .../handlers.ResetPassword (5 handlers) [GIN-debug] POST /change-password --> .../handlers.ChangePassword (5 handlers) [GIN-debug] PATCH /users/me --> .../handlers.UpdateProfile (5 handlers) [GIN-debug] POST /signout --> .../handlers.SignOut (5 handlers) [GIN-debug] GET /orgs/:id --> .../handlers.GetOrganizations (5 handlers) [GIN-debug] GET /orgs --> .../handlers.GetOrganizations (5 handlers)
Il doit s'agir du nombre de gestionnaires dans la chaîne de gestionnaires de chaque route, c'est-à-dire le nombre maximum de gestionnaires (y compris le middleware) qui seront exécutés lorsqu'une requête est acheminée vers un certain point de terminaison.
Le code correspondant provient de la source gin @latest :
func debugprintroute(httpmethod, absolutepath string, handlers handlerschain) { if isdebugging() { nuhandlers := len(handlers) handlername := nameoffunction(handlers.last()) if debugprintroutefunc == nil { debugprint("%-6s %-25s --> %s (%d handlers)\n", httpmethod, absolutepath, handlername, nuhandlers) } else { debugprintroutefunc(httpmethod, absolutepath, handlername, nuhandlers) } } }
Si vous configurez un middleware global, par exemple en utilisant router.use
, avant de déclarer la route, et qu'aucune route n'a de middleware pour chaque route, cela explique pourquoi les nombres sont toujours les mêmes.
Par exemple, considérez ce qui suit :
r.use(func(*gin.context) { fmt.println("first") }) r.get("/foo", func(c *gin.context) { c.status(http.statusok) }) r.use(func(*gin.context) { fmt.println("second") }) r.get("/bar", func(c *gin.context) { c.status(http.statusok) })
Impression :
[GIN-debug] GET /foo --> main.main.func2 (2 handlers) [GIN-debug] GET /bar --> main.main.func4 (3 handlers)
À cause du /foo
的链有 first
中间件和处理程序本身 (2),而 /bar
的链有 first
和 second
du middleware, plus du gestionnaire lui-même (3).
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!