Есть ли способ ограничить объем данных, которые я получаю из ответа? - PullRequest
3 голосов
/ 15 октября 2019

Здравствуйте, у меня есть небольшая задача - показать некоторые данные, которые я получаю из API. На главной странице будут отображаться первые 20 результатов, и нажатие на кнопку добавит еще 20 результатов со страницы.

Вызов API, который мне дали, возвращает массив из примерно 1500 элементов, и у API нет параметра для ограничения количества элементов в массиве, поэтому мой вопрос, могу ли я как-то ограничить его с помощью axios или мне просто выбрать все эти элементы и отобразить их?

Это API: https://api.chucknorris.io/

Ответы [ 2 ]

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

Поскольку в API нет параметров для ограничения количества результатов, за которые вы отвечаете за изменение ответа.

Поскольку вы используете Axios, вы могли бы сделать это с помощью перехватчик ответа , чтобы ответ был изменен до того, как он достигнет вашего приложения.

Возможно, вы захотите решить, где лучше всего это сделать. Если вы разрешите полный ответ вернуться в свое приложение и затем сохранить его где-то, может быть проще вернуть следующую страницу из 20 результатов по запросу пользователя, а не повторно вызывать API.

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

есть два ответа на ваш вопрос

короткий ответ :

С вашей стороны, вы ничего не можете сделать, пока не будет реализована нумерация страницСторона API

второй ответ :

вы можете справиться с этим, используя http module, например

 http.request(opts, function(response) {
    var request = this;
    console.log("Content-length: ", response.headers['content-length']);
    var str = '';
    response.on('data', function (chunk) {
      str += chunk;
      if (str.length > 10000)
      {
        request.abort();
      }
    });
    response.on('end', function() {
      console.log('done', str.length);
      ...
    });
  }).end();

Это приведет к прерыванию запроса на уровне около 10.000 байт, поскольку данные поступают в виде кусков разных размеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...