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

如何通过GitHub GraphQL API获取指定项目的所有Issues?分页方案咨询

GitHub GraphQL API 获取全量Issues的分页方案

GitHub GraphQL API 用的是游标(Cursor)分页,不是传统的页码分页,所以找不到页码参数很正常,按下面的步骤就能拿到所有Issues:

  • 首次请求:指定first: 100(这是单次请求的最大条数),同时返回pageInfo里的endCursor(当前页最后一条数据的标记)和hasNextPage(判断是否还有下一页)。示例查询:

    query GetAllIssues($owner: String!, $repo: String!) {
      repository(owner: $owner, name: $repo) {
        issues(first: 100, states: [OPEN, CLOSED]) {
          pageInfo {
            endCursor
            hasNextPage
          }
          nodes {
            id
            title
            createdAt
            # 按需添加你需要的其他字段
          }
        }
      }
    }
    
  • 循环拉取剩余数据:每次拿到endCursor后,下一次请求通过after参数传入这个游标,就能获取下一页的内容。直到hasNextPage返回false,就说明所有Issues都拉完了。示例后续请求的查询:

    query GetAllIssues($owner: String!, $repo: String!, $cursor: String!) {
      repository(owner: $owner, name: $repo) {
        issues(first: 100, states: [OPEN, CLOSED], after: $cursor) {
          pageInfo {
            endCursor
            hasNextPage
          }
          nodes {
            id
            title
            createdAt
            # 保持和首次请求一致的字段
          }
        }
      }
    }
    
  • 额外提醒:

    • 单次请求最多只能拿100条,超过会报错
    • 注意GitHub的API速率限制(每小时5000次请求),超大仓库分页时别太频繁
    • 默认只返回OPEN状态的Issues,要全量的话记得在states里同时指定OPEN和CLOSED

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:20:28