Я работаю над сценарием, который будет извлекать посты из разбитого на страницы API REST, предоставленного веб-сайтом, управляемым WordPress.
Я понял, что WordPress REST API разбит на страницы и получил ограничение в 100 объектов назапрос.
В приведенном ниже коде я пытаюсь получать посты постранично и по 20 постов на страницу.В конце я объединяю все извлеченные объекты в один большой объект.
Моя проблема в том, что при получении ответа HTTP 404 происходит сбой выборки, поскольку последний запрос содержит менее 20 сообщений.
Я хотел бы настроить переменную с именем limitPerPage, если выборка возвращается с 404 и уменьшать переменную, пока я не получу HTTP-ответ 200.
Моя проблема в том, что у меня не было опыта работы с обещанием получения.
Пожалуйста, посмотрите мой текущий скрипт ниже:
console.log('REST API is this: ' + apiUrl);
const getPosts = async function(pageNo = 1) {
let limitPerPage = 20;
let requestUrl = apiUrl + `?page=${pageNo}&per_page=${limitPerPage}`;
let apiResults = await fetch(requestUrl)
.then(function(response){
return response.json();
})
.catch(function(error){
console.log(error.status);
});
return apiResults;
}
const getEntirePostList = async function(pageNo = 1) {
const results = await getPosts(pageNo);
console.log('Retreiving data from API for page : ' + pageNo);
if (results.length > 0) {
return results.concat(await getEntirePostList(pageNo+1));
} else {
return results;
}
};( async () => {
const entireList = await getEntirePostList();
console.log(entireList);
})
();
Я ожидаю, что код уменьшит переменную 'limitPerPage 'на 1, если выборка возвращает ответ HTTP 404.
Нет необходимости просить окончательного решения моей проблемы.Я был бы признателен, если бы я предложил другой способ структурирования своего кода, чтобы получить нужный мне результат.
Спасибо!