GitHub Search API仅返回30个结果

Hua*_*eng 11 github-api

https://api.github.com/search/issues?q=stress+test+label:bug+language:python+state:closed

上面的查询假设返回76个结果,当我尝试运行它时,它只返回30.我猜GitHub会在超过30时返回结果.任何想法我怎么能得到其余的结果?

The*_*rog 24

您需要使用page参数,例如下一页30页= 2

https://api.github.com/search/issues?q=stress+test+label:bug+language:python+state:closed&page=2
Run Code Online (Sandbox Code Playgroud)

您还可以使用per_page参数更改默认大小30.它支持最大大小为100.像这样:

https://api.github.com/search/issues?q=stress+test+label:bug+language:python+state:closed&per_page=100
Run Code Online (Sandbox Code Playgroud)

更多细节可以在这里找到

  • `Link`标题包含指向下一页结果的链接.[官方GitHub API文档声明](https://developer.github.com/v3/#link-header),"遵循这些`Link`标头值而不是构建自己的URL非常重要." (3认同)

avi*_*amg 7

问题:Github api 响应不包含所有相关数据。

解决方案:服务器的 api 限制用户获取的项目数量并将其拆分为页面(分页)。您应该在请求中明确指定您希望从服务器分页引擎接收多少个项目,使用 Github 分页 api 的公式

?page=1&per_page=<numberOfItemsYouSpecify>"
Run Code Online (Sandbox Code Playgroud)

例如:我想在我的私人存储库中获取所有协作者信息。我正在向 Github 执行curl 请求,其中包含:用户名、身份验证令牌、组织和存储库名称以及带有分页魔法的 api 调用。

curl -u johnDoe:abc123$%^ https://api.github.com/repos/MyOrganizationName/MyAwesomeRepo/collaborators?page=1&per_page=1000"
Run Code Online (Sandbox Code Playgroud)

解释

什么是分页:分页是将网站的内容或部分拆分为离散页面的过程。当存在大量数据时,用户往往会迷失方向,并且通过分页拆分,他们可以专注于特定数量的内容。层次结构和分页结构提高了内容的可读性。加载页面是因为每个项目的内容较少,并且每个页面都有一个单独的 URL,易于引用。

在此用例中,Github api 将每个响应的结果拆分为 30 个项目,具体取决于请求

GitHub参考:

不同的 API 调用会以不同的默认值进行响应。例如,对 List public repositories 的调用提供 30 个一组的分页项目,而对 GitHub Search API 的调用则提供 100 个一组的分页项目。