Hook 如何在任何 req 之前和任何 res 之后执行代码

app.use() 和中间件可以用于之前,并且 closefinish 事件的组合可以用于之后

app.use(function (req, res, next) {
    function afterResponse() {
        res.removeListener('finish', afterResponse);
        res.removeListener('close', afterResponse);

        // actions after response
    }
    res.on('finish', afterResponse);
    res.on('close', afterResponse);

    // action before request
    // eventually calling `next()`
    next();
});
...
app.use(app.router);

一个例子是记录器中间件,默认情况下会在响应后追加到日志中。

只要确保在 app.router 之前使用这个中间件,因为订单很重要。

原帖是在这里