Golang echo包中间件实现

我想深入了解当我们调用next(c)函数中间件函数时发生了什么Process()

看看main()我的理解,我们通过调用将该Process()函数附加到 echoContext对象的中间件函数列表中Use()。但是,查看echo 源代码,我不确定中间件示例中的函数next(c)中的调用如何查看所有上下文的中间件函数。Process()即使搜索源代码后我似乎也找不到一些东西:

(1) 函数定义在哪里echo.HandlerFunc定义?我看到WrapHandler但它是导出的并且没有使用,echo.go所以我很困惑当调用我们跳转到源代码next(c)中的哪一行代码时会发生什么。echo.go

(2) 看起来循环发生在调用时,applyMiddleware因为这似乎循环了上下文的中间件函数列表中保存的所有中间件函数,但我看不到如何调用该方法,除非您调用导出的函数WrapMiddlewareServeHTTP


LEATH
浏览 139回答 1
1回答

UYOU

next(c)不循环任何东西。next是作为函数参数接收的变量,其中包含函数。next(c)调用该函数。实际上,它是链的下一部分 - 可能是下一个中间件,也可能是最终的请求处理程序。当返回func的Process被调用时,它本身可能已被next之前的中间件调用。没有涉及任何魔法,库中也没有隐藏任何东西,它只是一系列函数调用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go