我试图获取所有的记录目前在airtable,但它只让我100记录只,但我需要获取超过100记录。
loadListings(){
var self = this;
var app_id = "**********";
var app_key = "**********";
axios.get(
"https://api.airtable.com/v0/"+app_id+"/Weekly%20Report?view=Main%20View",
{
headers: { Authorization: "Bearer "+app_key }
}
).then(function(response){
console.log(response.data.records);
self.listings = response.data.records;
}).catch(function(error){
console.log(error)
});
}
3条答案
按热度按时间ehxuflar1#
Airtable API最多返回100条记录,不可更改,默认自带分页。
您需要进行多次调用以获取所有数据。响应将包含一个名为
offset
的属性。您需要检索它并在下次调用中使用它。下一个调用将返回一个新的
offset
,如此类推,直到到达记录的末尾。4xy9mtcn2#
顶级域名:
你可以尝试使用一个递归函数,当http响应(json)中存在偏移量时执行。
鸣谢:
这个解决方案花了7个小时的研究,故障排除和建议,从伟大的,强大的道格。该项目使用Alamofire执行http请求,SwiftyJson访问JSON。
原因:
在Airtable文档中,他们声明他们的费率限制是每个请求100个项目。如果请求超过100个项目,请求将包括偏移。
他们给予了一个指令,在下一个请求中包含偏移量,以获得下一个100个结果。但是,他们没有解释或演示如何做到这一点。
解决方案:
它已经被测试从25个http请求中检索2,565个项目。用Swift编写,逻辑很简单:
编写一个递归函数,其中包含一个可选的偏移量参数。调用不带偏移量的函数。检查http响应(json)中的偏移量。如果偏移量存在,则将http请求(json)存储在函数外部的数组中。然后,从函数内部调用同一个函数-这次使用偏移量。
code在这里
yb3bgrhw3#
这里有一个简单的解决方案,只使用axios。你不需要使用airtable.js
注意。如果返回的行数少于100行,则
offset
将为null(缺少),否则函数将自动递归调用自己,直到没有更多的行(offset
为null)。当递归的promise链被解析时,所有的行都被连接到一个列表中。您可以使用
params
只选择某些记录,例如...