如何在hapi服务器处理程序中解析和验证http发送的可读流有效负载? Handler代码目前看起来像这样
{
method: 'POST',
path: '/',
handler: function (request, reply) {
request.payload.pipe(process.stdout);
return reply('Success');
}
}
答案 0 :(得分:1)
简短说明:您无需解析它,默认情况下为自动。只需按照正常请求的相同方式进行验证。
默认情况下,hapi会将来自分块编码传输的可读流缓冲到内存中,然后尝试为您解析,具体取决于请求Content-type
标头。只有在流结束后,处理程序才会运行。这是因为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对象,而不是流。您可以使用Joi将其作为普通对象进行验证。