我有一个Express.JS服务器与许多res.json
。为了执行统计、日志记录和调试,我想在一个捕获所有钩子中捕获响应有效负载。
我已经找到了finish
事件res.on('finish')
,但我找不到如何从中提取响应有效载荷。
res.on('finish')在数据发送后被调用,因此有效负载不必再存在于服务器上。您可以添加中间件来拦截每个请求,然后在调用函数时重写.json
方法以记录数据:
router.use('/', (req, res, next) => {
var old = res.json.bind(res);
res.json = (body) => {
//Do whatever
old(body);
}
next();
})
表示响应对象是扩展Nodejs的本地http服务器
你可以在链接中看到它扩展
的确切位置如果你看Nodejs的官方文档你会发现http服务器在监听连接,关闭,结束等事件