Обрабатывать полезную нагрузку ответа с помощью fastify-reply-from

#fastify

#быстрая обработка

Вопрос:

Моя цель — манипулировать полезной нагрузкой ответа после того, как ответ уже возвращен клиенту, но, похоже, это невозможно сделать с помощью fastify fastify-reply-from, не влияя на время ответа. Вот единственный способ, которым я мог бы получить тело ответа и что-то с ним сделать.

   fastify.addHook('onSend', async (req, reply, payload) => {
return new Promise((resolve, reject) => {
  const chunks = [];

  payload.on('error', reject);
  
  payload.on('data', (chunk) => {
    chunks.push(chunk);
  });

  payload.on('end', () => {
    const body = Buffer.concat(chunks);
    doSomethingWithBody(body);

    resolve(body);
  });
});
 

Существуют ли другие способы сделать это, не обрабатывая поток вручную (полезная нагрузка — это экземпляр «IncomingMessage»)?

Комментарии:

1. Ваше решение в порядке, и вы не можете избежать обработки потока, поскольку вам нужно его изменить

2. Спасибо, я подумал, может быть, я смогу каким-то образом «дублировать» поток, поэтому один из них будет отправлен в качестве ответа клиенту, другой будет обработан для внутреннего использования (например, ведение журнала)