如何在 Hapijs 中流式传输 JSON 请求?
How to stream JSON request in Hapijs?
我有一个非常大的 JSON 请求,它导致了 413 错误。我正在探索解决此问题的解决方法(除了增加请求大小)并发现流式传输是一种选择。但是,我找不到流式传输 JSON 请求的任何示例。我怎样才能做到这一点?下面是我的代码
this.server.route({
method: 'POST',
path: '/vov',
config: {
payload: {
output: 'stream',
allow: ['application/json','multipart/form-data']
},
handler: (request, reply) => {
// request.setEncoding('utf8');
let payload = request.payload;
this.onMessage(payload);
// payload.on('data', (chunk) =>{
// console.log(chunk);
// // this.onMessage(payload);
// // setTimeout(() => {return reply.continue()},30000);
// });
// payload.on('end', (chunk) =>{
// console.log(chunk);
// this.onMessage(payload);
// setTimeout(() => {return reply.continue()},30000);
// });
// return reply.continue();
}
}
});
您可以提供 false
到 payload:
payload: {
output: 'stream',
parse: false
}
这将 return 有效负载中的流未修改。
然后就可以使用JSONStream模块来处理大流文件了。
const payload = request.payload;
payload.pipe(JSONStream.parse(options))
.on('data', (data) => {
// handle your logic
})
我有一个非常大的 JSON 请求,它导致了 413 错误。我正在探索解决此问题的解决方法(除了增加请求大小)并发现流式传输是一种选择。但是,我找不到流式传输 JSON 请求的任何示例。我怎样才能做到这一点?下面是我的代码
this.server.route({
method: 'POST',
path: '/vov',
config: {
payload: {
output: 'stream',
allow: ['application/json','multipart/form-data']
},
handler: (request, reply) => {
// request.setEncoding('utf8');
let payload = request.payload;
this.onMessage(payload);
// payload.on('data', (chunk) =>{
// console.log(chunk);
// // this.onMessage(payload);
// // setTimeout(() => {return reply.continue()},30000);
// });
// payload.on('end', (chunk) =>{
// console.log(chunk);
// this.onMessage(payload);
// setTimeout(() => {return reply.continue()},30000);
// });
// return reply.continue();
}
}
});
您可以提供 false
到 payload:
payload: {
output: 'stream',
parse: false
}
这将 return 有效负载中的流未修改。 然后就可以使用JSONStream模块来处理大流文件了。
const payload = request.payload;
payload.pipe(JSONStream.parse(options))
.on('data', (data) => {
// handle your logic
})