Node.JS – 在中间件中获取最终发送的数据

是否有可能在中间件中获取刚刚由我的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(); }); 

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

任何人都可以帮助我?

谢谢。

添加app.use(middleware); 路由器之后。

来源: Connect或Express中间件来修改response.body

编辑:对不起,我链接的答案适用于旧版本的Express 。 我已经读过Express源代码,并且在res.json()res.send()被调用时, body永远不会保存在res中。

要在Express 4中编辑主体,您似乎需要重写res方法,或者使用一个包,比如express-munghttps://www.npmjs.com/package/express-mung )。