Постраничная выборка (limit и offset)

Данные параметры предназначены только для операций чтения, т.е. для работы с оператором get

Результаты любой выборки из API принято называть страницей результатов.
Каждая страница не может включать больше 10 000 результатов.
Размер страницы определяется параметром limit и по умолчанию равен 10 000.
Количество пропускаемых элементов при генерации страницы определяется параметром offset.

Если в результате выборки были возвращены не все результаты, то в ответе будет возвращены дополнительные параметры:

  • nextOffset - значение offset для выборки следующией страницы
  • total - общее количество результатов

Примеры

Для примера представим, что всего в нашей выборке 25 результатов.
Мы хотим получить все результаты с ограничением по 10 результатов на страницу.

первые 10 результатов

Запрос

{"limit":10, "offset":0}

Результат

			{"result":[ /* первые 10 результатов */ ],"nextOffset":10,"total":25}
			

результаты: 10-20

Запрос

{"limit":10, "offset":10}

Результат

			{"result":[ /* Результаты с 11 по 20 */ ],"nextOffset":20,"total":25}
			

результаты: 20-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 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);