Пагинация
API Altium 365 использует пагинацию на основе курсоров в соответствии со спецификацией Relay connection. Запросы к коллекциям возвращают тип connection, содержащий список узлов, метаданные пагинации и курсоры для навигации вперед или назад по результатам.
Структура Connection
Ответ с пагинацией имеет следующую структуру:
query {
someCollection {
nodes { # the items on this page
...
}
pageInfo { # pagination metadata
hasNextPage
hasPreviousPage
startCursor
endCursor
}
totalCount # total number of items (all pages)
}
}
Получение страниц
Используйте аргументы 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
}
}