Постраничная выборка (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 */ ], "total":25 // обратите внимание, так как эта страница последняя, то nextOffset возвращен не будет }
Пример SDK
Пример получения списка запросов из проекта %NN%:
<?php $projectId = '%NN%'; // ID of your project $limit = 10; // page size $TVSession = new TVSession(); $selectorKeywords = new TVPen($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);