Node.js 如何在Hapijs中传输JSON请求?
我有一个非常大的JSON请求,它导致了413错误。我正在探索解决这个问题的解决方法(除了增加请求大小),并发现流媒体是一种选择。但是,我找不到任何流式JSON请求的示例。我该怎么做?下面是我的代码Node.js 如何在Hapijs中传输JSON请求?,node.js,hapijs,Node.js,Hapijs,我有一个非常大的JSON请求,它导致了413错误。我正在探索解决这个问题的解决方法(除了增加请求大小),并发现流媒体是一种选择。但是,我找不到任何流式JSON请求的示例。我该怎么做?下面是我的代码 this.server.route({ method: 'POST', path: '/vov', config: { payload: { output:
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: {
output: 'stream',
parse: false
}
这将返回有效负载中未修改的流。
然后,您可以使用该模块来处理大数据流文件
const payload = request.payload;
payload.pipe(JSONStream.parse(options))
.on('data', (data) => {
// handle your logic
})
你从哪里获得json?客户端发出HTTP请求你的意思是,你会收到一个大的json文件否,这是一个带有头application/jsonIt的大json请求,它似乎不适用于更大的json。您认为原因可能是什么?调试流可能非常棘手,一种有趣的方法是查看节点内部,使用NODE_DEBUG=stream NODE index.js运行应用程序,它将启动节点streams的调试模式i am get stream 27397:ondata stream 27397:read 0 stream 27397:need readable true stream 27397:length小于watermark true stream 27397:do read stream 27397:emitReadable true stream 27397:emit readable stream 27397:flow true流27397:读取未定义的流27397:合并流27397:完成流27397:取消管道