我正在使用nodejs并向服务器发送http post请求。在服务器端我运行PHP。我的服务器返回大约9KB的正确数据,但nodejs客户端中的数据终止。如果数据小于6KB,它可以正常工作。以下是我的代码
var reqPost = https.request(optionspost, function(res) {
res.on('data', function(d) {
Console.log('Cloud Resp:', d);
var jsonObj = JSON.parse(d);
});
});
我的打印Console.log('Cloud Resp:',d)仅打印最大8KB的数据。有人可以帮我理解这个限制是由nodejs或其他什么强加的,我怎样才能增加限制
答案 0 :(得分:1)
我认为在转移 PHP服务器--->期间,您的数据会被分块。节点服务器
https
模块从Node端请求(如果我错了,请纠正我)所以在data
事件中你需要连接块。但是你只在end
事件中解析它。如果您在data
事件中进行解析,由于数据不完整,它会显示JSON.parse()
的错误
以下是示例代码,它在我测试时使用500kb数据。基本上,本机节点在代码级别没有数据限制。
var http = require("https");
var options = {
"method": "GET",
"hostname": "c16db448-d912-4ce8-823a-db6c51e09878.mock.pstmn.io"
};
var req = http.request(options, function (res) {
var chunks = '';
res.on("data", function (chunk) {
console.log(chunk.length)
chunks += chunk;
});
res.on("end", function () {
const object = JSON.parse(chunks)
console.log(object.length)
console.log(Buffer.byteLength(chunks, 'utf8') / 1024 + " kbytes");
});
});
答案 1 :(得分:0)
让我猜一下,你正在使用正文解析器吗?这导致了一个问题。
Body Parser默认允许数据达到一定限度(我猜是100kB)。
要增加限制,请转到: 的 node_modules 强>>的体解析器强>>的 LIB 强>>的类型强>>的 json.js 强>
寻找以下一行:
var limit = typeof opts.limit !== 'number'
? bytes.parse(opts.limit || '100kb')
: opts.limit
将 100kB 中的 100 替换为您要在应用程序中施加的限制。这应该解决它。
修改强>
如果您不想更改node_modules: 声明bodyparser变量时设置 limit 选项。
var bodyParser = require('body-parser');
bodyParser.json({limit: *your limit in bytes*});
这仅适用于JSON解析的情况。您可以将限制参数设置为raw,text,urlencoded格式,类似(请查看下面的文档链接)。
请参阅this。
感谢@iofjuupasli建议可能有更好的方法。