Я не могу получить тело ответа, которое мне нужно сохранить в журналах вместе с телом запроса. Единственный раз, когда я могу получить тело ответа, это когда запрос не выполняется.
Я следил за сообщением в блоге, в котором решалась моя проблема с получением тела запроса при использовании плагина body-parser - https://www.express -gateway.io / exploit-request-stream / .
const { PassThrough } = require("stream");
const jsonParser = require("express").json();
const urlEncodedParser = require("express").urlencoded({ extended: true });
module.exports = {
name: 'body-parser',
policy: actionParams => {
return (req, res, next) => {
req.egContext.requestStream = new PassThrough()
req.pipe(req.egContext.requestStream)
return jsonParser(req, res, () => urlEncodedParser(req, res, next))
}
}
};
Когда запрос работает:
{ res: { statusCode: 400 },
req:
{ body: { a: 'b' },
headers:
{ ... } },
responseTime: 310 }
Когда это не работает:
{ res: { body: 'Bad gateway.', statusCode: 502 },
req:
{ body: { a: 'b' },
headers:
{ ... } },
responseTime: 1019 }