express中典型的中间件是在请求到达路由之前使用的,例如先进行身份验证,然后执行特定路由的代码,然后发送响应。
我想知道在路由被命中后是否可以有像中间件这样的东西。
假设我有 5 个路由,它们都以一些 json 进行响应,并且我想在每次命中其中一个路由时记录发送的 json。
每次在路由中发送响应时,我都可以手动记录,如下所示:
console.log(data);
res.json(data);
但这对我来说似乎多余。更好的方法可能是将其包装在一个函数中以在路由中调用,但这需要每次都传递响应对象,如下所示:
/* instead of the above */
send(data, res);
/* and then somewhere else usable for all routes */
function send(data, res) {
console.log(data);
res.json(data);
}
这对我来说似乎也有点不好,所以我想知道这是否是首选方式,或者是否有办法使用某种“中间件”,这将允许以通常的方式发送响应方式并在那之后 Hook 。
最佳答案
实际上不可能附加在路由之后执行的中间件,但您可以执行一个中间件,它在响应上绑定(bind)完成事件,
app.use(function(req, res, next){
res.on('finish', function(){
// Do whatever you want this will execute when response is finished
});
next();
});
关于node.js - 在用express发送响应后是否可以使用某种 'middleware'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27484361/