如何解析 hapi 中的读取流?

How to parse a read stream in hapi?

如何在 hapi 服务器处理程序中解析和验证通过 http 从客户端发送的可读流负载?处理程序代码目前看起来像这样

{
    method: 'POST',
    path: '/',
    handler: function (request, reply) {

        request.payload.pipe(process.stdout);
        return reply('Success');
    }
}

简短说明:您不需要解析它,默认情况下是自动。只需按照与正常请求相同的方式进行验证。

默认情况下,hapi 会将来自 chunked-encoding 传输的可读流缓冲到内存中,然后根据请求 尝试为您解析它 Content-type header。处理程序将 运行 仅在流结束后 。这是因为 payload config 设置的默认选项。

server.route({
    config: {
        payload: {
            output: 'data',   // These are default options
            parse: true       // These are default options
        }
    }
    method: 'POST',
    path: '/',
    handler: function (request, reply) {

        console.log(request.payload); // This is an Object
        return reply('Success');
    }
});

因此,如果客户端发送 JSON 请求,request.payload 将是 JavaScript object,而不是流。您可以使用 Joi.

像普通 object 一样验证它