NodeJS / Express:如何为所有res.render而不是res.send设置自定义标头?

时间:2018-01-25 17:05:04

标签: node.js express

我的Express服务器上有多个中间件。我想为所有res.render设置相同的自定义标头。但是,我不希望它们与res.send一起发送。

我发现了answer。但是,执行此操作会将标头设置为服务器发送的所有响应,包括res.renderres.send

有没有办法影响所有res.render而不影响res.send s?

谢谢!

2 个答案:

答案 0 :(得分:1)

另一种方法是覆盖顶级中间件中的res.render方法,并在调用时设置所需的标头并调用原始render方法,如下所示:

// top middleware
app.use(function overrideRender(req, res, next) {
    const originalRender = res.render;

    res.render = function customRender() {
        // set your headers here

        originalRender.apply(res, arguments);
    };

    next();
});

答案 1 :(得分:1)

app.use()方法可以接受一个端点数组作为参数。您可以将所有路由(包含res.render方法)分组到一个数组中,并在用户到达其中一个时调用指定的中间件:

var routes = [
    '/route/1/',
    '/route/2/',
    '/route/3/',
];

app.use( routes, function (req, res, next) {

    res.setHeader('header' , 'value' );

    next();

});