Пагинация
API Altium 365 использует пагинацию на основе курсоров в соответствии со спецификацией Relay connection specification. Запросы коллекций возвращают тип connection, содержащий список узлов, метаданные пагинации и курсоры для перехода вперед или назад по результатам.
Структура Connection
Ответ с пагинацией имеет следующую форму:
query {
someCollection {
nodes { # элементы на этой странице
...
}
pageInfo { # метаданные пагинации
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount # общее количество элементов (на всех страницах)
}
}
Получение страниц
Используйте аргументы first и after, чтобы постранично перемещаться вперед по коллекции:
query {
desProjects(first: 20, after: "{cursor}") {
nodes {
id
name
}
pageInfo {
hasNextPage
endCursor
}
}
}
-
first– количество элементов для возврата (размер страницы) -
after– курсор, обозначающий конец предыдущей страницы; в первом запросе не указывается
endCursor из pageInfo становится значением after для следующей страницы. Продолжайте, пока hasNextPage не станет false.
Для перемещения назад используйте last и before вместе с startCursor.
Первый запрос
Для первой страницы не указывайте аргумент after:
query {
desProjects(first: 20) {
nodes {
id
name
updatedAt
}
pageInfo {
hasNextPage
endCursor
}
totalCount
}
}
Используйте totalCount, чтобы определить, сколько страниц следует ожидать перед началом постраничного запроса.
Подсчет без получения элементов
Если вам нужно только общее количество, можно вообще не запрашивать nodes:
query {
desProjects {
totalCount
}
}