Я работаю над написанием скрипта, который будет извлекать данные из API. Мне нужно получить все экземпляры данных в API, но API ограничивает меня до 250 результатов одновременно. Ответ также дает мне номер смещения, который я могу использовать в новом вызове API для получения следующего набора результатов. Я знаю, сколько вызовов в API мне нужно сделать, и я думал об использовании переменной в параметрах, чтобы я мог обновлять число смещений после каждого вызова API. Проблема всегда связана с фактической установкой переменной и использованием ее при повторном запуске цикла.
Я могу выполнить запрос ajax и вернуть данные, а затем установить смещение в переменную. Я попытался создать начальный вызов API, а затем вернуть ответ и затем использовать это возвращенное значение в новой функции внутри цикла for. Мне кажется, что это самое близкое решение, но каждый раз, когда цикл запускается, переменная сбрасывается в ноль, и я возвращаю начальное значение смещения.
Вот самый последний код:
for (iteration = 1; iteration < 4; iteration++) {
let offsetValue;
pullWriteData = offsetValue => {
return axios({
method: "get",
url: "https://api.hubapi.com/engagements/v1/engagements/paged",
params: {
hapikey: "API_KEY_HERE",
limit: 250,
offset: offsetValue
}
}).then(response => {
return response.data;
});
};
pullWriteData().then(data => {
offsetValue = data.offset;
console.log("New offset value: " + offsetValue);
return offsetValue;
});
}
этот код возвращает:
New offset value: 12345678
New offset value: 12345678
New offset value: 12345678
Я также встроил второй вызов Axios в .then
моего вызова pullWriteData (), и это работает, но это определенно противоречит цели написания программы, которая сделает это для меня.
Я ожидаю, что это запустит начальный вызов API, запишет данные в файл, обновит offsetValue
, снова выполнит вызов API с новым offsetValue
, запишет этот ответ в файл, обновит offsetValue
и повторяйте, пока я не соберу все данные.
Что касается записи данных в файл, я уже могу это сделать, используя fs
. Это просто получение значения offsetValue
для обновления, что, кажется, меня раздражает.
Заранее спасибо за любые рекомендации.