{"meta":{"title":"GraphQL API에서 페이지 매김 사용","intro":"GraphQL API를 사용하여 커서 기반 페이지 매김을 사용하여 데이터 집합을 트래버스하는 방법을 알아봅니다.","product":"GraphQL API","breadcrumbs":[{"href":"/ko/graphql","title":"GraphQL API"},{"href":"/ko/graphql/guides","title":"안내서"},{"href":"/ko/graphql/guides/using-pagination-in-the-graphql-api","title":"페이지 나누기"}],"documentType":"article"},"body":"# GraphQL API에서 페이지 매김 사용\n\nGraphQL API를 사용하여 커서 기반 페이지 매김을 사용하여 데이터 집합을 트래버스하는 방법을 알아봅니다.\n\n## 페이지 매김에 대해\n\nGitHub의 GraphQL API는 GitHub 서버에 대한 과도한 또는 악의적인 요청으로부터 보호하기 위해 단일 요청에서 가져올 수 있는 항목 수를 제한합니다. GraphQL API를 사용하는 경우 모든 연결에 대한 `first` 또는 `last` 인수를 제공해야 합니다. 이러한 인수의 값은 1에서 100 사이여야 합니다. GraphQL API는 `first` 또는 `last` 인수로 지정된 연결 수를 반환합니다.\n\n액세스하는 데이터에 `first` 또는 `last` 인수로 지정된 항목 수보다 더 많은 연결이 있는 경우 응답은 지정된 크기의 더 작은 \"페이지\"로 나뉩니다. 이러한 페이지는 전체 데이터 집합이 검색될 때까지 한 번에 하나씩 가져올 수 있습니다. 마지막 페이지가 아니면 각 페이지에는 더 적은 수의 항목이 포함될 수 있는 `first` 또는 `last` 인수로 지정된 항목 수가 포함됩니다.\n\n이 가이드에서는 페이지를 매긴 응답에 대한 추가 결과 페이지를 요청하는 방법, 각 페이지에서 반환되는 결과 수를 변경하는 방법 및 여러 페이지의 결과를 가져오는 스크립트를 작성하는 방법을 보여 줍니다.\n\n## 쿼리에서 `cursor`를 요청하기\n\nGraphQL API를 사용하는 경우 커서를 사용하여 페이지를 매긴 데이터 집합을 트래버스합니다. 커서는 데이터 집합의 특정 위치를 나타냅니다.\n`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` 인수는 반환되는 항목 수를 제어합니다.\n`first` 또는 `last` 인수를 사용하여 가져올 수 있는 최대 항목 수는 100개입니다. 쿼리가 속도 또는 노드 제한에 도달하는 것을 방지하기 위해 많은 데이터를 터치하는 경우 100개 미만의 항목을 요청해야 할 수 있습니다. 자세한 내용은 [GraphQL API에 대한 속도 제한 및 쿼리 제한](/ko/graphql/overview/rate-limits-and-query-limits-for-the-graphql-api)을(를) 참조하세요.\n\n## 페이징을 사용하여 데이터 집합을 탐색하다\n\n쿼리에서 커서를 반환하면 커서를 사용하여 결과의 다음 페이지를 요청할 수 있습니다. 그렇게 하려면 `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` 인수를 사용하여 결과의 이전 페이지를 가져옵니다.\n`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\nGitHub의 Octokit SDK 및 `octokit/plugin-paginate-graphql` 플러그 인을 사용하여 스크립트의 페이지 매김을 지원할 수 있습니다. 자세한 내용은 [plugin-paginate-graphql.js](https://github.com/octokit/plugin-paginate-graphql.js) 참조하세요."}