我想在express.js中创建一个中间件函数。它可以监控每个请求和响应。我创建了一个中间件,但它只能监视请求,不能监视响应。
function middlewareFunc (req,res,next) {
console.log(req.body , req.params , req.query);
next();
}
最佳答案
您应该知道 function(req, res, next)
中的 res
是类 http.ServerResponse
的实例。因此可以监听 finish
事件,请参阅链接:https://nodejs.org/api/stream.html#stream_event_finish
app.use(function (req, res, next) {
function afterResponse() {
res.removeListener('finish', afterRequest);
res.removeListener('close', afterRequest);
// action after response
}
res.on('finish', afterResponse);
res.on('close', afterResponse);
// action before request
// eventually calling `next()`
});
app.use(app.router);
app.use()
和中间件可用于“before”,并且可使用 close
和 finish
事件的组合表示“之后”。
关于node.js - 有没有办法监控 Express.js 中的每个响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35716058/