我有一个对 http GET 数据的 API 调用,一次 100 条记录。
它有一个 GET URL 参数: ?offset=
可以设置为获取所有结果。
最初我认为偏移量为 0,必须进行测试,但随后为 101、201、301。
第一次提取将获得记录 1..100。
我从这个(下面的代码)开始,获取前 100 条记录,但我不确定这里的循环是什么样的,因为我不知道最终有多少记录,我不知道如何退出循环。
如果有人有这方面的经验,并且可以将此代码示例、修改并作为回复发布,将非常感激。
同样在 await 内,是否需要axios.get()
调用processRecords()
await processRecords()
,然后async processRecords()
呢?
我得到错误,如果我指定await processRecords()
,我试图理解这一点。
这是一个实际的工作示例,它将获取前 100 条记录,我想循环,递增?offset=<next start number>
直到全部获取。
function processRecords() {
console.log('processRecords()');
// do stuff
}
const processTable = async () => {
const url = `https://api.airtable.com/v0/` + atApiBaseKey + `/` + atTableName;
const headers = {
'Authorization': "Bearer " + atApiKey,
'Content-Type': "application/json"
};
try {
let offset = 0; // no initial offset
let params = {
maxRecords: 100,
offset: offset
};
/**
* how to loop here over await axios.get() ?
*
* what would a for loop look like here, incrementing offset by 100
* each time?
*
* and how would the loop exit?
*
*/
await axios.get(url, {params: params, headers: headers})
.then((response) => {
processRecords(response.data.records); // process 100 records
//console.log(response.data);
//console.log(response.status);
//console.log(response.statusText);
//console.log(response.headers);
//console.log(response.config);
console.log('')
});
} catch (error) {
console.error(error)
}
};
谢谢你!