Node.JS - 在中间件的末尾获取发送的数据

Node.JS - Get sent data at the end in a middleware

是否可以在中间件中获取我的 API 刚刚发送的数据?

例如我有一个带有这个中间件的 nodejs 服务器:

    var middleware = function(req, res, next) {
       res.on('finish', function() {
          console.log(res.statusCode); // display 200
          console.log(res.body); // display empty data
      });
      next();
   };

还有我的 API:

    app.get('/url', function(req, res) {
       res.status(200).json({name:'john'}).end();
    });

但是在我的中间件中,我只能得到状态码'200',而不能得到对象{name:'john'}

谁能帮帮我?

谢谢。

路由器后面加上app.use(middleware);

来源: Connect or Express middleware to modify the response.body

编辑: 抱歉,我 link 的答案适用于旧版本的 Express。我已经阅读了 Express 源代码,当 res.json()res.send() 被调用。

要在 Express 4 中编辑正文,您似乎需要重写 res 方法,或使用执行此操作的包,像 express-mung (https://www.npmjs.com/package/express-mung).