如何为所有 HTTP 请求获取包装器回调,类似于 Express 的做法,以便当 100 毫秒长的 HTTP 请求传入时,我可以在请求的开头和结尾记录 2 行:
0ms HTTP request start
100ms Response delivered
app.useGlobalInterceptors()
和 MiddlewareConsumer.apply()
都采用在请求开始的第一个毫秒结束的回调。
以下内容按预期工作。
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
console.log('start')
req.on('end', () => {
console.log('end')
})
next()
}
}
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(LoggerMiddleware),
}
}
基于此开放遥测示例。感谢 NestJS Discord 上的用户脚本帮助我解决这个问题!