Как я могу получить части большого ответа от API, использующего Javascript? - PullRequest
0 голосов
/ 11 января 2019

У меня большой запрос API, который дает мне около 1000 результатов. Поскольку этот запрос слишком велик, мне нужно разделить на несколько частей ответа, так что это быстрее. Я хотел бы запросить 1000 результатов, но потоковая передача данных идет со стороны клиента

В запросе API вам не разрешено вводить какие-либо параметры, поэтому вы получаете все количество сообщений. Ответом является JSON, в основном такой же, как Wordpress (но это не Wordpress)

Я пробовал один и тот же запрос с 10 до 10 результатов, но мне нужно выполнить несколько запросов для достижения ожидаемого поведения.

Я бы хотел получить запрос из 1000 результатов.

    fetch(api)
    .then((data) => ...)
    .then((data) => {
        //When loaded first 10 records show
        //When loaded next 10 records show
        ...
        // Until the 1000
    })

Есть ли способ, которым я мог бы достичь этого?

Ответы [ 3 ]

0 голосов
/ 11 января 2019

Очень важно знать, как вы получаете ваши результаты. Например, если вы используете потоковую передачу, данные поступают одновременно, и вам не придется иметь дело с такого рода проблемами.

Вы можете проверить ссылки ниже для фоновой потоковой передачи данных.

Протокол WebSocket обеспечивает взаимодействие между веб-клиентом (например, браузером) и веб-сервером с меньшими накладными расходами, облегчая передачу данных в режиме реального времени с сервера и на сервер

Ссылка

0 голосов
/ 23 января 2019

Наконец, то, что я сделал, было получено с множеством запросов на разных страницах, и данные, которые постепенно обновляются новыми записями из нового запроса

0 голосов
/ 11 января 2019

Существует несколько способов, которыми бэкэнд может реализовать потоковую передачу / нумерацию страниц, и ответ JS зависит от того, каким образом поддерживает запрашиваемый бэкэнд.

  • Пагинация по параметрам запроса
  • Запросы диапазона HTTP (как фильмы онлайн транслируются с разрешенным поиском)
  • Потоковая передача через веб-сокет (как работают веб-игры, когда игроки получают обновления в режиме реального времени)

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

WordPress API поддерживает разбиение на страницы, как показано здесь:

https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/

Что вам нужно сделать, так это запросить страницу со смещением, чтобы получить эту часть результатов, например:

 /wp/v2/posts?per_page=100&offset=1000

Получит список постов после поста № 1000, где на каждой странице будет 100 результатов.

Для других API вам необходимо предоставить более подробную информацию, чтобы мы могли определить, как передавать результаты.

...