gpt4 book ai didi

golang echo包中间件实现

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:23 31 4
gpt4 key购买 nike

我正在学习 Go 并经历了这个例子:echo middleware example .我想深入了解当我们在函数中间件函数 Process() 中调用 next(c) 时发生了什么。

查看 main() 我知道我们通过Use() 调用。然而,看着 echo source code我不确定中间件示例中 Process() 函数中的 next(c) 调用如何查看上下文的所有中间件函数。一些即使在搜索源代码后我似乎也找不到的东西:

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

(2) 看起来循环是在调用 applyMiddleware 时发生的,因为它似乎循环遍历了保存在 Context 的中间件函数列表中的所有中间件函数,但我不明白该方法是如何实现的调用,除非你调用导出的 WrapMiddleware 函数或 ServeHTTP 等。

最佳答案

next(c) 不会遍历任何内容。 next 是作为函数参数接收的变量,其中包含一个函数。 next(c) 调用该函数。实际上,它是链的下一部分——可能是下一个中间件,或者可能是最终的请求处理程序。当 Process 返回的 func 被调用时,它本身可能已被它之前的中间件调用为 next

库中没有任何魔法,也没有隐藏任何内容。它只是一连串的函数调用。

关于golang echo包中间件实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57064089/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com