8192 ограниченный размер данных в запросе NodeJS - PullRequest
1 голос
/ 25 октября 2019

Я пытаюсь получить JSON из API, но получена только половина ответа. Так как же получить полный ответ?

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());

})

1 Ответ

2 голосов
/ 26 октября 2019

Ваш код верен, единственная ошибка, которую вы допустили, заключается в том, что вы передаете данные запроса в потоковом режиме, поэтому вы не получите полных данных о событии «data», если ответ большой. Вам нужно будет собрать кусок и объединить его по окончании события. проверьте этот фрагмент кода

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
    }
})
...