Javascript 在ExpressJS中执行res.send()之前修改响应正文
在我目前开发的应用程序中,它使用的是Express。在我的例子中,我希望在发送之前得到响应并修改它(为了JWT的目的)。在这个应用程序中,有十几个端点,我不想创建自己的函数,比如Javascript 在ExpressJS中执行res.send()之前修改响应正文,javascript,node.js,express,Javascript,Node.js,Express,在我目前开发的应用程序中,它使用的是Express。在我的例子中,我希望在发送之前得到响应并修改它(为了JWT的目的)。在这个应用程序中,有十几个端点,我不想创建自己的函数,比如sendAndSign(),并替换res.send()。我听说有一个选项可以覆盖/修改res.send(…)方法的逻辑 我发现了类似的东西,但在我的情况下,这不起作用。是否有其他选项(可能使用一些插件)来管理此操作 您可以通过临时覆盖res.send截取Express中的响应正文: function convertDat
sendAndSign()
,并替换res.send()。我听说有一个选项可以覆盖/修改res.send(…)
方法的逻辑
我发现了类似的东西,但在我的情况下,这不起作用。是否有其他选项(可能使用一些插件)来管理此操作 您可以通过临时覆盖res.send
截取Express中的响应正文:
function convertData(originalData) {
// ...
// return something new
}
function responseInterceptor(req, res, next) {
var originalSend = res.send;
res.send = function(){
arguments[0] = convertData(arguments[0]);
originalSend.apply(res, arguments);
};
next();
}
app.use(responseInterceptor);
我在Node.js v10.15.3中进行了测试,效果很好。您想要覆盖的到底是什么,为什么?您正在向响应标题添加数据吗?或者是您想将所有响应正文包装在其中的内容?可能是我想在发送响应之前获取响应,并使用jws对正文进行签名。@AlexandreSenges可能是重复的内容有关于完全重写函数的答案,但这不是我的目标。我只想修改它的主体和原始res.send()函数的使用。换句话说,我需要类似中间件的东西,但它应该适用于响应对象。