Heim > Artikel > Backend-Entwicklung > Was bedeutet die Go/Gin-Debug-Ausgabe – (x-Handler)
php-Editor Youzi erklärt Ihnen die Bedeutung von „(x-Handler)“ in der Go/Gin-Debugging-Ausgabe. Im Gin-Framework der Go-Sprache stellt „(x Handler)“ die Anzahl der Middleware dar, die die Anfrage durchläuft. Middleware ist ein Mechanismus im Gin-Framework zur Verarbeitung von Anforderungen. Sie kann einige Vorgänge ausführen, bevor oder nachdem die Anforderung die Routing-Verarbeitungsfunktion erreicht. Jede Middleware gibt die Anfrage an die nächste Middleware weiter, bis sie schließlich die Handler-Funktion erreicht. Das „x“ in „(x Handler)“ stellt die Anzahl der Middlewares dar, was Entwicklern helfen kann, zu verstehen, wie viele Middlewares während der Anforderungsverarbeitung verarbeitet wurden. Durch die Beobachtung der Anzahl der Middlewares können Entwickler den Anforderungsverarbeitungsprozess besser verstehen und das Debuggen und Optimieren des Codes erleichtern. Ich hoffe, diese Antwort hilft Ihnen!
Was bedeutet (5 Handler) in der Go/Gin-Debug-Ausgabe unten? Wie Sie sehen, habe ich offensichtlich mehr als 5 Handler.
[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)
Es sollte die Anzahl der Handler in der Handler-Kette jeder Route sein, d. h. die maximale Anzahl von Handlern (einschließlich Middleware), die ausgeführt werden, wenn eine Anfrage an einen bestimmten Endpunkt weitergeleitet wird.
Der relevante Code stammt aus der gin-Quelle @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) } } }
Wenn Sie eine globale Middleware einrichten, z. B. mit router.use
, bevor Sie die Route deklarieren, und keine Route über Middleware für jede Route verfügt, erklärt dies, warum die Zahlen immer gleich sind.
Bedenken Sie zum Beispiel Folgendes:
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) })
Drucken:
[GIN-debug] GET /foo --> main.main.func2 (2 handlers) [GIN-debug] GET /bar --> main.main.func4 (3 handlers)
Aufgrund /foo
的链有 first
中间件和处理程序本身 (2),而 /bar
的链有 first
和 second
der Middleware und des Handlers selbst (3).
Das obige ist der detaillierte Inhalt vonWas bedeutet die Go/Gin-Debug-Ausgabe – (x-Handler). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!