Express Gateway: тело ответа не получено - PullRequest
0 голосов
/ 15 января 2019

Я не могу получить тело ответа, которое мне нужно сохранить в журналах вместе с телом запроса. Единственный раз, когда я могу получить тело ответа, это когда запрос не выполняется.

Я следил за сообщением в блоге, в котором решалась моя проблема с получением тела запроса при использовании плагина 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 }

1 Ответ

0 голосов
/ 15 января 2019

одного этого кода недостаточно для получения тела ответа.Это просто подключит обработку тела запроса и сделает его доступным для EG в разобранном виде.Если вы хотите подключить ответ также, вам нужно будет добавить обработчик в объект ответа, как только это будет сделано.

Пример кода можно найти здесь

Надеюсь, это поможет!

V.

...