Регистрировать тела запросов / ответов с помощью http-proxy-middleware - PullRequest
0 голосов
/ 11 мая 2018

Я использую http-proxy-middleware для реализации прозрачного прокси.

Я бы хотел сделать проверку запроса / ответа. Я имею в виду, что я хотел бы напечатать в текстовом файле запросы / ответы, которые проходят через прокси-сервер без каких-либо изменений в них.

До сих пор я использую нечто подобное (упрощенная версия):

app.use('/proxy/:service/', proxy({
        pathRewrite: function(path, req){
            ...
        },
        router: function(req) {
            ...
        },
        onProxyRes: function(proxyRes, req, res) {
            log("Req URL: " + req.originalUrl);
            log("Response status code: " + proxyRes.statusCode);
        }
}));

(log() - вспомогательная функция, которая использует строку в качестве входных данных и печатает это мой файл журнала)

Таким образом, в основном я использую onProxyRes для перехвата ответа и ведения журнала в этот момент. Проблема в том, что мне удалось заставить его работать только для таких вещей, как URL, код состояния, заголовки и т. Д., Но я не нашел тела полезной нагрузки в req и / или resProxy объектах.

Я читал о том, как получить res тело здесь . Однако это кажется сложным решением (необходимо установить обработчик события data). И, насколько я понимаю, это не покрывает тело req.

Любая подсказка / помощь / ссылка высоко ценится, пожалуйста. Не уверен, что даже использование onProxyRes является наилучшим способом реализации этого, может быть, библиотека предоставляет некоторые функциональные возможности для покрытия случая запрос / ответ.

1 Ответ

0 голосов
/ 11 мая 2018

Если вы хотите req.body, вы должны использовать библиотеку, чтобы получить ее (или собрать ее из потока самостоятельно).Я рекомендую body-parser

...