,我正在 aws lambda 中使用 go 并寻找通用的中间件解决方案。我有以下代码:,中间件函数有一个参数
events.apigatewaywebsocketproxyrequest
因为目标处理程序 wshandler
使用此类型。,我有另一个处理程序,它采用参数 event events.apigatewayproxyrequest
,如下所示。由于参数不匹配,因此无法使用此中间件。,我尝试将中间件句柄更改为 interface{}
,但不起作用。 go 抱怨这种类型。,有没有办法让中间件适用于任何处理程序类型?,让我分享我能够在我的系统上复制的工作解决方案。首先给大家分享一下我使用的项目布局:,现在,让我们关注代码。,代码如下:,让我们总结一下基本概念:,我们定义 event
结构体,它将成为我们的通用事件。它是 record
结构的包装器。record
结构使用结构嵌入来嵌入我们要处理的所有事件(例如 event.apigatewayproxyrequest
和 sqsevent
)。我们依靠中间件签名中的这一点来尽可能通用。,这里没什么可说的。,这同样适用于这里。,请注意我们如何获取活动信息。,有几个注意事项需要考虑:,如果这有帮助或者您需要其他任何东西,请告诉我,谢谢!,