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-mung ( https://www.npmjs.com/package/express-mung )。