{"meta":{"title":"Использование разбиения на страницы в API GraphQL","intro":"Узнайте, как просматривать наборы данных с помощью разбиения на страницы на основе курсоров с помощью API GraphQL.","product":"API GraphQL","breadcrumbs":[{"href":"/ru/enterprise-cloud@latest/graphql","title":"API GraphQL"},{"href":"/ru/enterprise-cloud@latest/graphql/guides","title":"Guides"},{"href":"/ru/enterprise-cloud@latest/graphql/guides/using-pagination-in-the-graphql-api","title":"Разбиение на страницы"}],"documentType":"article"},"body":"# Использование разбиения на страницы в API GraphQL\n\nУзнайте, как просматривать наборы данных с помощью разбиения на страницы на основе курсоров с помощью API GraphQL.\n\n## Сведения о разбиении на страницы\n\nGraphQL API GitHub ограничивает количество элементов, которые можно получить в одном запросе, чтобы защитить от чрезмерных или злоупотребленных запросов к серверам GitHub. При использовании API GraphQL необходимо указать `first` или `last` аргумент для любого подключения. Значение этих аргументов должно быть от 1 до 100. API GraphQL возвращает количество подключений, указанных аргументом или `first` аргументом`last`.\n\nЕсли доступ к данным имеет больше подключений, чем количество элементов, указанных `first` аргументом, `last` ответ делится на меньшие \"страницы\" указанного размера. Эти страницы можно получить по одному за раз до получения всего набора данных. Каждая страница содержит количество элементов, указанных аргументом `first` или `last` аргументом, если это не последняя страница, которая может содержать меньшее число элементов.\n\nВ этом руководстве показано, как запрашивать дополнительные страницы результатов для ответов с разбивкой на страницы, как изменить количество результатов, возвращаемых на каждой странице, и как написать скрипт для получения нескольких страниц результатов.\n\n## Запрос в запросе `cursor`\n\nПри использовании API GraphQL можно использовать курсоры для обхода по набору данных с разбивкой на страницы. Курсор представляет определенную позицию в наборе данных. Вы можете получить первый и последний курсор на странице, запрашивая `pageInfo` объект. Например:\n\n```graphql\nquery($owner: String!, $name: String!) {\n  repository(owner: $owner, name: $name) {\n    pullRequests(first: 100, after: null) {\n      nodes {\n        createdAt\n        number\n        title\n      }\n      pageInfo {\n        endCursor\n        startCursor\n        hasNextPage\n        hasPreviousPage\n      }\n    }\n  }\n}\n```\n\nВ этом примере `pageInfo.startCursor` курсор для первого элемента на странице.\n`pageInfo.endCursor` возвращает курсор для последнего элемента на странице.\n`pageInfo.hasNextPage` и `pageInfo.hasPreviousPage` укажите, есть ли страница до и после возвращаемой страницы.\n\n## Изменение количества элементов на странице\n\n`first` Аргументы `last` определяют количество возвращаемых элементов. Максимальное количество элементов, которые можно получить с помощью `first` аргумента или `last` аргумента, равно 100. Возможно, вам потребуется запросить менее 100 элементов, если запрос касается большого количества данных, чтобы избежать достижения ограничения скорости или узла. Дополнительные сведения см. в разделе [Ограничения скорости и ограничения запросов для API GraphQL](/ru/enterprise-cloud@latest/graphql/overview/rate-limits-and-query-limits-for-the-graphql-api).\n\n## Обход набора данных с помощью разбиения на страницы\n\nПосле возврата курсора из запроса можно использовать курсор для запроса следующей страницы результатов. To do вы будете использовать аргумент `after` или `before` и курсор.\n\nНапример, при условии `pageInfo.endCursor` , что значение из предыдущего примера было `Y3Vyc29yOnYyOpHOUH8B7g==`, этот запрос можно использовать для запроса следующей страницы результатов:\n\n```graphql\nquery($owner: String!, $name: String!) {\n  repository(owner: $owner, name: $name) {\n    pullRequests(first: 1, after: \"Y3Vyc29yOnYyOpHOUH8B7g==\") {\n      nodes {\n        createdAt\n        number\n        title\n      }\n      pageInfo {\n        endCursor\n        hasNextPage\n        hasPreviousPage\n      }\n    }\n  }\n}\n```\n\nВы можете продолжать отправлять запросы с новым `pageInfo.endCursor` значением, возвращаемым в ответе, пока не осталось страниц для обхода, указанных `pageInfo.hasNextPage`путем `false` возврата.\n\nЕсли вы указали `last` вместо `first` аргумента, то сначала будет возвращена последняя страница результатов. В этом случае вы будете использовать `pageInfo.startCursor` значение и `before` аргумент для получения предыдущей страницы результатов. После `pageInfo.hasPreviousPage` возврата `false`вы достигли последней страницы. Например:\n\n```graphql\nquery($owner: String!, $name: String!) {\n  repository(owner: $owner, name: $name) {\n    pullRequests(last: 1, before: \"R3Vyc29yOnYyOpHOHcfoOg==\") {\n      nodes {\n        createdAt\n        number\n        title\n      }\n      pageInfo {\n        startCursor\n        hasPreviousPage\n      }\n    }\n  }\n}\n```\n\n## Следующие шаги\n\nВы можете использовать пакет SDK Octokit для GitHubи подключаемый `octokit/plugin-paginate-graphql` модуль для поддержки разбиения на страницы в скриптах. Для получения дополнительной информации см. [plugin-paginate-graphql.js](https://github.com/octokit/plugin-paginate-graphql.js)."}