Как использовать ax ios для получения всех данных ответов при наличии нескольких страниц? - PullRequest
0 голосов
/ 05 марта 2020

У меня есть URL-адрес типа https://abc123/api/records, который дает мне:

{"page":1,"per_page":10,"total":99,"total_pages":10,"data":[object1, object2, object3,...]}
axios.get("https://abc123.com/api/records?&page=2")
  .then(response => console.log(response.data))

Затем мне будет выдано что-то вроде

{"page":2,"per_page":10,"total":99,"total_pages":10,"data":[object1, object2, object3,...]}

Я хочу получить доступ ко всем объектам в «данные» со всех 10 страниц. Как бы я это сделал, используя nodeJS и топор ios?

1 Ответ

0 голосов
/ 05 марта 2020

Вы можете использовать al oop, например do ... while , для загрузки каждой страницы данных. Мы прекратим загрузку, как только получим последнюю страницу данных.

Мы устанавливаем параметр страницы, используя объект params, начиная со страницы 1.

const axios = require("axios");

// Replace with the appropriate url.
const url = "https://abc123.com/api/records"

async function downloadRecords() {

    let records = [];
    let page = 0;
    let totalPages = 0;

    do {
        let { data: response }  = await axios.get(url, { params: { page: ++page } });
        totalPages = response.total_pages;
        console.log(`downloadRecords: page ${page} of ${totalPages} downloaded...`);
        records = records.concat(response.data);
        console.log("records.length:", records.length);
    } while (page < totalPages)

    console.log("downloadRecords: download complete.")
}

downloadRecords();
...