На сервере Node.js запросы являются экземплярами IncomingMessage . В свою очередь, IncomingMessage
реализует интерфейс Readable Stream .
Если мы хотим вывести все тело запроса, мы должны реализовать что-то вроде этого:
req.on('data', chunk => {
console.log(chunk.toString());
});
Но этот фрагмент кода потребляет данные в потоке, и мне нужно, чтобы эти данные оставались в потоке для последующего использования. Есть ли способ прочитать данные из потока, не потребляя их?
Если нет, возможно ли переместить данные в очередь для потоковой передачи?
В моем случае я использую Hapi.js. Доступ к потоку запросов можно получить через request.raw.req
. Мой код выглядит так:
const server = Hapi.server({ port: 3000, host: 'localhost' });
server.route({
method: 'POST',
path: '/',
handler: (request, h) => {
var req = request.raw.req; // Get the IncomingMessage
req.on('data', chunk => {
console.log(chunk.toString());
});
return 'Hello, world!';
}
});
server.start();