Постраничная выборка (limit и offset)
Данные параметры предназначены только для операций чтения, т.е. для работы с оператором
get
Результаты любой выборки из API принято называть страницей результатов.
Каждая страница не может включать больше 10 000 результатов.
Размер страницы определяется параметром limit и по умолчанию равен 10 000.
Количество пропускаемых элементов при генерации страницы определяется параметром offset.
Если в результате выборки были возвращены не все результаты, то в ответе будет возвращены дополнительные параметры:
- nextOffset - значение offset для выборки следующией страницы
- total - общее количество результатов
Примеры
Для примера представим, что всего в нашей выборке 25 результатов.
Мы хотим получить все результаты с ограничением по 10 результатов на страницу.
Запрос
{"limit":10, "offset":0}
Результат
{"result":[ /* первые 10 результатов */ ],"nextOffset":10,"total":25}
Запрос
{"limit":10, "offset":10}
Результат
{"result":[ /* Результаты с 11 по 20 */ ],"nextOffset":20,"total":25}
Запрос
{"limit":10, "offset":20}
Результат
{"result":[ /* Результаты с 21 по 25 */ ]
// обратите внимание, так как эта страница последняя, то nextOffset и total возвращены не будут}
Пример SDK
Пример получения списка запросов из проекта %NN%:
<?php
$projectId = '%NN%'; // ID of your project
$limit = 10; // page size
$TVSession = new TV\Session();
$selectorKeywords = new TV\Pen($TVSession, 'get', 'keywords_2', 'keywords');
$selectorKeywords->setData(['project_id' => $projectId]);
$selectorKeywords->setLimit($limit);
// get all result pages
do{
$page = $selectorKeywords->exec();
if(is_null($page->getResult())) return var_dump($page->getErrors());
// $page - array of keywords
foreach($page->getResult() as $resultItem){
var_dump($resultItem);
}
$nextOffset = $page->getNextOffset();
if($nextOffset) $selectorKeywords->setOffset($nextOffset);
}while($nextOffset);