当前位置: 首页 > 面试题库 >

在对客户端执行响应之前表达中间件

胡飞舟
2023-03-14
问题内容

我需要修改模块发送给客户端的响应数据,因为该模块使用了res.send我似乎无法找到一种方法来对数据进行修改,然后再将数据发送给客户端。

我可以使用任何中间件/事件来捕获res.send和修改数据吗?

我知道它router.use存在,但是在router.post函数之前而不是在将res.send其发送到客户端之前调用它。因此,我需要某种中间件,该中间件在router.post函数完成后但在没有任何内容发送到客户端之前被调用。


问题答案:

好吧,您可以覆盖send函数:

app.use(function (req, res) {
    var send = res.send;
    res.send = function (body) { // It might be a little tricky here, because send supports a variety of arguments, and you have to make sure you support all of them!
        // Do something with the body...
        send.call(this, body);
    };
});

如果您想支持的不仅仅是调用send(例如调用end方法),那么您就必须重写更多的函数…

您可以检查connect-livereload以了解如何将脚本添加到任何html输出中。



 类似资料:
  • 问题内容: 在我的Django应用程序中,我想跟踪响应是否已成功发送到客户端。我很清楚,HTTP之类的无连接协议中没有“防水”方式来确保客户端已接收(并显示)响应,因此这不是关键任务功能,但是我仍然想在最近的可能时间。响应将不是HTML,因此无法从客户端进行任何回调(使用Javascript或IMG标签等)。 我可以找到的“最新”钩子是在中间件列表的第一个位置添加实现process_respons

  • 我遇到了一个有趣的问题,HTTP 1.1 POST请求的TCP连接在请求之后立即关闭(即,在服务器可以发送响应之前)。 关于测试环境的一些细节: 客户端-Windows XP、Internet Explorer 8、Flash player 12。 服务器-Java 7 在上述行为之前,我们有几个长期存在的TCP连接,每个都被重用用于多个HTTP请求;我们打开一个长轮询,当这个轮询完成时,打开另一

  • 只是想知道有没有办法得到spring Web-Flux的web客户端的响应时间?

  • 我必须从网页上阅读某个领域的内容。有人告诉我,我需要获取整个页面,然后从html内容中提取文本。我使用以下程序来获取所需的页面html内容。现在的问题是,这个网页需要几秒钟的时间来加载我想要读取的实际文本值,即使其他静态页面组件都是在前面加载的。我的程序在静态组件加载之后,但在我的值加载之前,返回html内容。因此,我得到的最终HTML具有页面加载过程pic,而不是实际值。有没有人可以指导我在这个

  • 我必须从网页上阅读某一领域的内容。我已经被告知,我需要获得整个页面,然后从html内容中提取文本。我正在使用下面的程序来获取所需的页面html内容。现在的问题是,这个网页加载我想要读取的实际文本值需要几秒钟的时间,即使前面加载了其余的静态页面组件。我的程序在静态组件加载之后但在我的值加载之前返回html内容。因此,我得到的最终HTML有页面加载过程pic,而不是实际值。有没有人可以指导我在这个程序