为了账号安全,请及时绑定邮箱和手机立即绑定

Golang echo包中间件实现

Golang echo包中间件实现

Go
LEATH 2023-07-04 15:54:24
我想深入了解当我们调用next(c)函数中间件函数时发生了什么Process()。看看main()我的理解,我们通过调用将该Process()函数附加到 echoContext对象的中间件函数列表中Use()。但是,查看echo 源代码,我不确定中间件示例中的函数next(c)中的调用如何查看所有上下文的中间件函数。Process()即使搜索源代码后我似乎也找不到一些东西:(1) 函数定义在哪里echo.HandlerFunc定义?我看到WrapHandler但它是导出的并且没有使用,echo.go所以我很困惑当调用我们跳转到源代码next(c)中的哪一行代码时会发生什么。echo.go(2) 看起来循环发生在调用时,applyMiddleware因为这似乎循环了上下文的中间件函数列表中保存的所有中间件函数,但我看不到如何调用该方法,除非您调用导出的函数WrapMiddleware等ServeHTTP。
查看完整描述

1 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

next(c)不循环任何东西。next是作为函数参数接收的变量,其中包含函数。next(c)调用该函数。实际上,它是链的下一部分 - 可能是下一个中间件,也可能是最终的请求处理程序。当返回funcProcess被调用时,它本身可能已被next之前的中间件调用。

没有涉及任何魔法,库中也没有隐藏任何东西,它只是一系列函数调用。


查看完整回答
反对 回复 2023-07-04
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信