返回顶部
首页 > 资讯 > 精选 >Go/Gin 调试输出的含义是什么 - (x handlers)
  • 713
分享到

Go/Gin 调试输出的含义是什么 - (x handlers)

go语言 2024-02-09 08:02:54 713人浏览 安东尼
摘要

PHP小编柚子为您解答Go/Gin调试输出中的"(x handlers)"的含义。在Go语言的Gin框架中,"(x handlers)"代表请求经过的中间件数量。中间件是Gin框架中用

PHP小编柚子为您解答Go/Gin调试输出中的"(x handlers)"的含义。在Go语言的Gin框架中,"(x handlers)"代表请求经过的中间件数量。中间件是Gin框架中用于处理请求的一种机制,可以在请求到达路由处理函数之前或之后执行一些操作。每个中间件都会将请求传递给下一个中间件,直到最终到达处理函数。"(x handlers)"中的"x"表示中间件的数量,它可以帮助开发者了解请求处理过程中经过了多少个中间件的处理。通过观察中间件数量,开发者可以更好地理解请求的处理流程,方便调试和优化代码。希望这个解答对您有所帮助!

问题内容

在下面的 go/gin 调试输出中,(5 handlers) 的含义是什么。正如您所看到的,我显然有超过 5 个处理程序。

[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)

解决方法

它应该是每个路由的处理程序链中的处理程序数量,即当请求路由到某个端点时将执行的处理程序(包括中间件)的最大数量。

相关代码来自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)
        }
    }
}

如果您正在设置一些全局中间件,例如使用 router.use,在声明路由之前,并且没有路由具有每个路由的中间件,这解释了为什么数字总是相同的。

例如,请考虑以下内容:

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)
    })

打印:

[GIN-debug] GET    /foo    --> main.main.func2 (2 handlers)
[GIN-debug] GET    /bar    --> main.main.func4 (3 handlers)

因为 /foo 的链有 first 中间件和处理程序本身 (2),而 /bar 的链有 firstsecond 中间件,加上处理程序本身 (3)。

以上就是Go/Gin 调试输出的含义是什么 - (x handlers)的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Go/Gin 调试输出的含义是什么 - (x handlers)

本文链接: https://lsjlt.com/news/562291.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Go/Gin 调试输出的含义是什么 - (x handlers)
    php小编柚子为您解答Go/Gin调试输出中的"(x handlers)"的含义。在Go语言的Gin框架中,"(x handlers)"代表请求经过的中间件数量。中间件是Gin框架中用...
    99+
    2024-02-09
    go语言
  • nodejs中回调的含义是什么
    这篇文章主要介绍“nodejs中回调的含义是什么”,在日常操作中,相信很多人在nodejs中回调的含义是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”nodejs中回调的...
    99+
    2024-04-02
  • ps命令输出进程状态S+的含义是什么
    这篇文章主要介绍了ps命令输出进程状态S+的含义是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。最近发现一个问题,ps命令输出里面进程状态为S+的含义,网上好多文章都说是...
    99+
    2023-06-09
  • nodejs回调地狱的含义是什么
    本篇内容主要讲解“nodejs回调地狱的含义是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“nodejs回调地狱的含义是什么”吧! ...
    99+
    2024-04-02
  • python调试过程中多颜色输出的方法是什么
    本篇内容主要讲解“python调试过程中多颜色输出的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python调试过程中多颜色输出的方法是什么”吧!主要语法主要是通过一个固定格式的字符...
    99+
    2023-07-05
  • go语言中标识符的含义是什么
    在go语言中,标识符是指Go语言对各种变量、方法、函数等命名时使用的字符序列;标识符由若干个字母、下划线“_”、和数字组成,且第一个字符必须是字母。通俗的讲就是凡可以自己定义的名称都可以叫做标识符。在使用标识符之前必须进行声明,声明一个标识...
    99+
    2023-05-14
    go语言 Golang
  • Linux引导时输入特殊信息的含义是什么
    小编给大家分享一下Linux引导时输入特殊信息的含义是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!通常只有在缺省模式失败(屏幕一片混乱或者安装到某个阶段无法进行下去)的情况下会尝试这些模式。对于一些支持的其他模式,参...
    99+
    2023-06-12
  • linux定义变量然后输出的方法是什么
    在Linux中,定义变量并输出的方法有多种。以下是其中的几种方法: 使用等号(=)进行赋值: variable_name=val...
    99+
    2023-10-24
    linux
  • go语言中函数的定义是什么及怎么调用
    本文小编为大家详细介绍“go语言中函数的定义是什么及怎么调用”,内容详细,步骤清晰,细节处理妥当,希望这篇“go语言中函数的定义是什么及怎么调用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在go语言中,函数是组...
    99+
    2023-07-04
  • go version -m 输出中的箭头符号“=>”是什么意思?
    php小编草莓在这里为大家解答一个关于Go语言的疑问:在运行`go version -m`命令时,输出中的箭头符号"=>"代表的含义是什么呢?这个符号实际上是用来表示包的依赖关系...
    99+
    2024-02-09
    go语言
  • Golang GinWeb之自定义日志格式和输出方式/启禁日志颜色的方法是什么
    这篇文章主要介绍“Golang GinWeb之自定义日志格式和输出方式/启禁日志颜色的方法是什么”,在日常操作中,相信很多人在Golang GinWeb之自定义日志格式和输出方式/启禁日志颜色的方法是什么问...
    99+
    2024-04-02
  • 断言:模拟:我不知道要返回什么,因为方法调用是意外的 在 Go 中编写单元测试时出错
    php小编小新在这篇文章中将为您介绍在Go语言中编写单元测试时出现的一种常见错误,即断言错误。当我们在编写单元测试时,有时会遇到无法确定返回值的情况,这会导致意外的方法调用错误。在本文...
    99+
    2024-02-10
    go语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作