Github API分页限制

时间:2018-01-21 20:19:27

标签: github pagination github-api github-graphql

因此,我创建了一个查询,使用其GraphQL API(使用REST API测试相同的问题)从Github检索一些数据。查询部分显示如下(显示重要的内容):

query listRepos($queryString: String!, $numberOfRepos: Int!, $afterCursor: String!) {
    rateLimit {
        cost
        remaining
        resetAt
    }
    search(query: $queryString, type: REPOSITORY, first: $numberOfRepos, after: $afterCursor) {
        repositoryCount
        pageInfo {
            endCursor
            startCursor
        }
        <data related to the repository here>
    }
}

我做了一小段代码在浏览器上运行来检索数据。代码在执行第50个请求的那一刻起没有问题。此时,response没有与分页相关的数据;也就是说,没有任何与pageInfo对象(分页)相关的游标。

注意,在这一点上,我距离甚至接近我能做的请求的极限还有很远。事实上,我在开始时有5000点,而且每个调用的成本都是1.因此,在我停止接收分页游标的那一刻,我仍然有4950分。

此外,此时我收集了近1000个存储库的数据。 repositoryCount显示的搜索查询结果超过450,000条。因此,这不是达到页面/列表/数据的结尾。

因此,此时我无法进一步移动并检索其余数据。我甚至尝试使用Insomnia和Postman使用我拥有的最后一个有效光标来检索数据,但我只得到一个没有任何光标的响应。

为什么会这样?

更新

尝试使用REST API时也会发生同样的事情。使用查询API并分析响应头,我看到我只得到34页结果(大约1000个存储库),尽管搜索计数返回的结果超过400,000。

1 个答案:

答案 0 :(得分:2)

REST API和GraphQL API都会限制从搜索查询返回的项目数为1,000个结果:https://developer.github.com/v3/search/#about-the-search-api

  

就像在Google上搜索一样,您有时会想要查看几页搜索结果,以便找到最符合您需求的项目。为满足这一需求,GitHub Search API为每次搜索提供最多1,000个结果。