Модифицируйте тело ответа перед выполнением res.send () в ExpressJS - PullRequest
0 голосов
/ 18 июня 2019

В приложении, которое я сейчас разрабатываю, используется Express.В моем случае я хочу получить ответ до его отправки и изменить его (для целей JWT).В этом приложении есть дюжина конечных точек, и я не хочу создавать свою собственную функцию, например sendAndSign(), и заменять res.send() везде в коде.Я слышал, что есть возможность переопределить / изменить логику метода res.send(...).

Я нашел что-то вроде примера модификации , но в моем случае это не сработало.Есть ли другой вариант (возможно, с помощью какого-либо плагина) для управления этим действием?

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Вы можете перехватить тело ответа в Express путем временного переопределения res.send:

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, и он хорошо работает.

1 голос
/ 18 июня 2019

Если эта библиотека делает то, что заявляет,

https://github.com/richardschneider/express-mung

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...