如何解析 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 一样验证它
如何在 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.