You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub GraphQL API分页获取用户指定区间仓库的实现问题

要实现通过 GitHub GraphQL API 获取指定范围的仓库数据,首先你需要知道 GitHub GraphQL 不支持直接传入偏移量(offset)跳转到指定位置查询,所有分页都依赖游标(cursor)机制实现。你要取第10到20条的仓库,可以按照以下步骤操作:

第一步:查询获取基准游标

首先调整现有查询,拉取前10条仓库的同时,拿到第10条对应的游标值:

query GetFirst10Repos {
  user(login: "someuser") {
    repositories(first: 10) {
      totalCount
      edges {
        cursor
        node {
          name
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}

查询返回的 pageInfo.endCursor 就是第10条仓库对应的游标。如果你需要最终结果包含第10条,可以把这里的first: 10改成first:9,拿到第9条的游标作为基准即可。

第二步:使用游标查询目标范围数据

把上一步拿到的游标值传入 after 参数,拉取后续10条(如果要包含第10条就拉11条),就可以得到你需要的第10到20条数据:

query GetTargetRangeRepos {
  user(login: "someuser") {
    repositories(first: 10, after: "替换为第一步拿到的endCursor字符串") {
      totalCount
      nodes {
        name
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}

补充说明

  • 如果需要拉取用户的全部仓库,循环执行第二步即可:每次用上次查询返回的endCursor作为下一次查询的after参数,直到返回的hasNextPage为false就说明已经拉完所有仓库。
  • 默认仓库按创建时间倒序排列,你可以通过orderBy参数自定义排序规则,示例:repositories(first:10, orderBy: {field: UPDATED_AT, direction: DESC}) 代表按最后更新时间倒序排列。

内容的提问来源于stack exchange,提问作者Ufuk UYSAL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 19:06:03