【发布时间】:2019-07-16 19:18:47
【问题描述】:
我正在学习 Go 并且正在经历这个例子:echo middleware example。我想深入了解当我们在函数中间件函数Process() 中调用next(c) 时发生了什么。
查看main() 我知道我们通过Use() 调用将Process() 函数附加到echo Context 对象的中间件函数列表中。但是,查看echo source code,我不确定中间件示例中Process() 函数中的next(c) 调用如何查看上下文的所有中间件函数。即使在搜索源代码后我似乎也找不到一些东西:
(1) echo.HandlerFunc 的函数定义在哪里?我看到WrapHandler,但这是导出的,没有在echo.go 中使用,所以我很困惑当next(c) 被调用echo.go 源代码中我们跳转到的哪一行代码时会发生什么。
(2) 调用applyMiddleware 时似乎发生了循环,因为这似乎循环了保存在 Context 的中间件函数列表中的所有中间件函数,但我看不到该方法是如何调用的,除非你调用导出WrapMiddleware函数或ServeHTTP等
【问题讨论】:
-
如果您指的是特定的源代码,请在问题正文中引用相关代码,而不是外部链接。
-
HandlerFunc不是一个函数,而是一个 type,这就是为什么它没有函数定义,但是,source code 中有一个类型定义如果你有兴趣。
标签: go middleware go-echo