【问题标题】:express/connect middleware which executes after the response is sent to the clientexpress/connect 中间件在响应发送到客户端后执行
【发布时间】:2013-07-19 16:00:59
【问题描述】:

是否可以编写一个中间件,在响应发送到客户端之后执行,或者在请求被处理之后执行,然后在将响应发送给客户端之前调用?

【问题讨论】:

    标签: node.js express connect middleware


    【解决方案1】:

    看看绑定到req.on('end', function() {...}); 是否适合你。

    【讨论】:

    • 如果我理解正确的话,这个事件会在客户端完成向服务器发送请求/数据时触发。但我想要的是,在调用 response.render 或 response.redirect 等之后,应该执行中间件。
    【解决方案2】:

    pauljz 给出了基本方法,但进一步扩展,这里是一个中间件示例

    module.exports = function() {
      return function(req, res, next) {
        req.on("end", function() {
          // some code to be executed after another middleware
          // does some stuff
        });
        next(); // move onto next middleware
      }
    }
    

    在您的主应用中

    expressApp.use(require("./doneMiddleware"));
    expressApp.use(express.logger());
    expressApp.use(express.static.....
    

    【讨论】:

    • 如果我理解正确的话,这个事件会在客户端完成向服务器发送请求/数据时触发。但我想要的是,在调用 response.render 或 response.redirect 等之后,应该执行中间件。
    • 不,一旦完成整个请求,包括发送响应,就会发出此事件。只要渲染/重定向调用 response.end 关联的请求就会发出 end。
    • @SelvarajMA 以下方法可能更好:stackoverflow.com/a/21858212/673014.
    猜你喜欢
    • 2011-05-17
    • 2020-02-24
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多