连接或Express中间件以修改response.body

时间:2012-03-27 19:48:20

标签: node.js express connect

我想要一个修改响应体的中间件函数。

这适用于快递服务器。

类似的东西:

function modify(req, res, next){
  res.on('send', function(){
    res.body = res.body + "modified"
  });

  next();
}

express.use(modify);

我不明白要听哪个事件。任何帮助或文档将不胜感激。

4 个答案:

答案 0 :(得分:21)

您无需收听任何活动。做吧

function modify(req, res, next){
  res.body = res.body + "modified";

  next();
}

use在你use路由器之后。这样,在所有路线执行完毕后,您可以修改正文

答案 1 :(得分:17)

我相信OP实际上想要在中间件处理请求后修改响应流。查看捆绑的Compress中间件实现,以获取如何完成此操作的示例。连接猴子补丁ServerResponse原型,以便在调用header时发出writeHead事件,但在完成之前。

答案 2 :(得分:7)

express-mung就是为此而设计的。而不是事件,它只是更多的中间件。您的示例看起来像

const mung = require('express-mung')

module.exports = mung.json(body => body.modifiedBy = 'me');

答案 3 :(得分:2)

似乎有一个名为connect-static-transform的模块,请查看:

https://github.com/KenPowers/connect-static-transform

  

连接中间件,允许在提供静态文件之前对其进行转换。

它带有示例,例如this one