spec
, который вы передаете, имеет следующие дополнительные поля, среди прочего:
limit
// максимальное количество возвращаемых объектов offset
/ / смещение, используемое для постраничного чтения
Значение по умолчанию limit
равно 2000.
Возвращаемый результат выборки имеет логическое поле вместе с массивом объектов, называется hasMore
, что указывает, есть ли еще записи в базовом хранилище данных.
Вы можете написать al oop, который заканчивается, когда hasMore
ложно. Начните с offset
, равного 0, и ограничьте n
(скажем, n=2000
), а затем итеративно увеличивайте смещение на n
.
library(tidyverse)
library(httr)
library(jsonlite)
limit <- 2000
offset <- 0
hasMore <- TRUE
all_objs <- c()
while(hasMore) {
resp <- POST(
"https://api.c3.ai/covid/api/1/linelistrecord/fetch",
body = list(
spec = list(
limit = limit,
offset = offset,
filter = "contains(location, 'California')" # just as an example, to cut down on the dataset
)
) %>% toJSON(auto_unbox = TRUE),
accept("application/json")
)
hasMore <- content(resp)$hasMore
offset <- offset + limit
all_objs <- c(all_objs, content(resp)$objs)
}
length(all_objs)