📑

GitHub GraphQL APIのsearchクエリのページネーションにおいて、次のページを取得する方法

2023/08/14に公開

概要

GitHub GraphQL APIのsearchクエリのページネーションにおいて、次のページを取得する方法を記載します。

やってみる

まず1ページ目を取得します。

{
  search(query: "tsu", type: REPOSITORY, first: 3) {
    edges {
      node {
        ... on Repository {
          nameWithOwner
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

レスポンスになります。

{
  "data": {
    "search": {
      "edges": [
        {
          "node": {
            "nameWithOwner": "cswl/tsu"
          }
        },
        {
          "node": {
            "nameWithOwner": "tsuru/tsuru"
          }
        },
        {
          "node": {
            "nameWithOwner": "processone/tsung"
          }
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "endCursor": "Y3Vyc29yOjM="
      }
    }
  }
}

次に2ページ目を取得します。レスポンスのendCursorをafterに指定します。

{
  search(query: "tsu", type: REPOSITORY, first: 3, after: "Y3Vyc29yOjM=") {
    edges {
      node {
        ... on Repository {
          nameWithOwner
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

レスポンスになります。

{
  "data": {
    "search": {
      "edges": [
        {
          "node": {
            "nameWithOwner": "google/tsunami-security-scanner"
          }
        },
        {
          "node": {
            "nameWithOwner": "egoist/tsup"
          }
        },
        {
          "node": {
            "nameWithOwner": "tsugiproject/tsugi"
          }
        }
      ],
      "pageInfo": {
        "hasNextPage": true,
        "endCursor": "Y3Vyc29yOjY="
      }
    }
  }
}

以上です。

Discussion