8192 NodeJS 请求中的数据大小受限
8192 limited data size in NodeJS request
我正在尝试从 api 中获取 json,但只收到了一半的响应。那么如何获得完整的回复呢?
var request = require('request');
var url_to_check = 'http://example.com/api/test';
request.get(url_to_check).on('data', function(data) {
// Only half of the data is printed (8192). Remaining bytes are lost.
console.log(data.toString());
})
您的代码是正确的,您犯的唯一错误是您正在流式传输请求数据,因此如果响应很大,您将无法获得有关事件 'data' 的完整数据。您将不得不收集块并在事件 'end' 上进行整合。检查此代码片段
var request = require('request');
var url = 'https://reqres.in/api/users';
var req = request.get(url)
var data = []
req.on('data',function(chunk){
data.push(chunk))
})
req.on('end',function(){
console.log(Buffer.concat(data).toString())
})
并且如果您不想流式传输和管道数据并且响应大小也很小,那么您可以试试这个:
request.get(url, function(err, response, responseBody) {
if (!err) {
// var jsonRes = JSON.parse(JSON.stringify(response))
// responseBody = jsonRes.body
console.log(responseBody)
} else {
// handle error here
}
})
我正在尝试从 api 中获取 json,但只收到了一半的响应。那么如何获得完整的回复呢?
var request = require('request');
var url_to_check = 'http://example.com/api/test';
request.get(url_to_check).on('data', function(data) {
// Only half of the data is printed (8192). Remaining bytes are lost.
console.log(data.toString());
})
您的代码是正确的,您犯的唯一错误是您正在流式传输请求数据,因此如果响应很大,您将无法获得有关事件 'data' 的完整数据。您将不得不收集块并在事件 'end' 上进行整合。检查此代码片段
var request = require('request');
var url = 'https://reqres.in/api/users';
var req = request.get(url)
var data = []
req.on('data',function(chunk){
data.push(chunk))
})
req.on('end',function(){
console.log(Buffer.concat(data).toString())
})
并且如果您不想流式传输和管道数据并且响应大小也很小,那么您可以试试这个:
request.get(url, function(err, response, responseBody) {
if (!err) {
// var jsonRes = JSON.parse(JSON.stringify(response))
// responseBody = jsonRes.body
console.log(responseBody)
} else {
// handle error here
}
})