express.js – jak zachytit response.send() / response.json()

Řekněme, že mám více míst, kde volám response.send(someData) . Nyní chci vytvořit jediný globální interceptor, kde zachytím všech .send a proveďte nějaké změny v someData . Existuje nějaký způsob v express.js? (háky, posluchače, zachycovače, …)?

Odpověď

Můžete definovat middleware, jak je uvedeno níže (převzato a upraveno z této odpovědi)

function modifyResponseBody(req, res, next) {
    var oldSend = res.send;

    res.send = function(data){
        // arguments[0] (or `data`) contains the response body
        arguments[0] = "modified : " + arguments[0];
        oldSend.apply(res, arguments);
    }
    next();
}

app.use(modifyResponseBody);