Постраничная выдача
По умолчанию коллекция отдаётся страницами по 1000 строк. Если строк больше, в конце ответа есть ссылка на следующую страницу:@odata.nextLink, пока ссылка есть. Power BI, Excel и большинство OData-библиотек делают это сами.
$skiptokenхранит значения порядка и ключ последней строки, поэтому продолжение идёт по ключу, а не через пропуск строк: страницы не теряют и не дублируют строки, даже если в наборе что-то изменилось.@odata.nextLinkпереносит остальные параметры запроса ($filter,$select,$expand,$orderby).- Продолжение работает и у регистров, в том числе с составными, булевыми полями и перечислениями в ключе, и у результата
$apply.
Размер страницы
Клиент задаёт размер страницы заголовком:Выдача одним ответом
Настройка «Выдача коллекций» (вкладка «Движки» формы настроек):
В режиме «Одним ответом» сервер читает набор порциями («Размер порции выдачи одним ответом», по умолчанию 5000, для широких строк порция меньше) и пишет их в поток ответа. «Наибольшее число строк одним ответом» (0 — без предела) обрывает ответ ссылкой
@odata.nextLink.
Страницами отвечают всегда, даже в режиме «Одним ответом»:
- если запрос несёт
Prefer: odata.maxpagesize; - при продолжении по
$skiptoken; - в операциях
$batch; - если профиль доступа задаёт лимит страницы.
Что выбрать для больших выгрузок
Замеры: файловая база, около 100 тыс. документов и около 1 млн записей в каждом регистре, выдача JSON — Rust-компонентой.1С отдаёт тело ответа после окончания обработчика, поэтому при выдаче одним ответом первый байт приходит в конце. Тело не держится целиком в памяти процесса: пик памяти Apache в замерах — 1,4–1,7 ГБ при ответах 1,5–3,5 ГБ.
$skip
$skip ограничен 10 000. Глубже листайте по @odata.nextLink.