使用middy warmup中间件时的执行顺序是怎样的?
Middy Warmup 中间件与自定义before钩子执行规则
首先明确核心结论:warmup的预热检查会优先执行,不会直接进入你在链式调用末尾添加的.before()代码块,具体规则如下:
- Middy的生命周期钩子严格按照注册顺序执行:所有
before阶段的逻辑,完全遵循代码里调用.use()、.before()的先后顺序,从先到后依次触发 - 你最先注册的
warmup()中间件,它自身的before钩子会第一个执行:钩子内部会立刻校验当前请求是否为预热请求- 若判定为预热请求:warmup中间件会直接返回约定的预热响应,立刻终止整个请求流程,后续注册的cors中间件、requestMiddleware、你自定义的末尾.before()钩子、甚至原始业务handler都不会被执行
- 若判定为正常业务请求:才会按注册顺序依次执行后续cors中间件逻辑、requestMiddleware逻辑,之后才会进入你写在末尾的
.before()代码块,执行完成后再进入原始handler处理业务
对应参考代码如下:
const handler = middy(originalHandler) .use(warmup()) .use( cors({ origins: [fetchEnvironmentVariable('SOME_ENDPOINT')], credentials: true }) ) .use(requestMiddleware()) .before(async () => { // some code }) return handler()
这段代码里的before阶段执行优先级从高到低为:warmup检查 > cors逻辑 > requestMiddleware逻辑 > 自定义before代码 > originalHandler业务逻辑,只要命中预热请求,后面的所有逻辑都会被直接跳过。
内容的提问来源于stack exchange,提问作者Y.H
相关产品推荐
相关产品推荐

