2

你好所以我正在使用获取 github api 的请求:

commitsPublic <- GET("https://<host-name>/api/v3/search/commits?
q=is:public+org:<ORG-NAME>",
add_headers(Authorization= "token <your-Token>", Accept= 
'application/vnd.github.cloak-preview'))

提交公开

我得到:

156 项(总数)

 Content-Type: application/json; charset=utf-8
  Size: 291 kB
{
  "total_count": 156,
  "incomplete_results": false,
  "items": [
    {
  (I removed the Items Since they are not important)

但是当我尝试转换 Json 时:

显示非结构化和可读的原始数据

jsonRespText<-content(commitsPublic,as="text") 
jsonRespText

转换为 JSON:

toJson <- fromJSON(jsonRespText)
toJson

回报:

$items[[30]]$score
[1] 1

它返回一个列表,其中的项目最多为 30 " items[[30]]

并且 items[[31]] 为 NULL

所以我要问的是如何从 Json 文本中获取所有列表中的 156 个列出的项目。我有另一个获取请求,它给了我 10.000 Total Commits。但是当我从 Json 转换时,列表仍然有 30 个。所以任何帮助将不胜感激thanx!

4

1 回答 1

2

Github API 分页到 30 个结果。分页信息在响应链接头中。

library(httr)

commitsPublic <- GET("https://api.github.com/search/commits?q=is:public+org:rstudio",
                     add_headers(Accept = 'application/vnd.github.cloak-preview'))

headers(commitsPublic)$link
#> [1] "<https://api.github.com/search/commits?q=is%3Apublic+org%3Arstudio&page=2>; 
#> rel=\"next\", 
#> <https://api.github.com/search/commits?q=is%3Apublic+org%3Arstudio&page=34>; 
#> rel=\"last\""

reprex 包(v0.2.1)于 2019 年 3 月 22 日创建

这告诉我们下一页的位置,在这个例子中总共有 34 页。

参考:https ://developer.github.com/v3/guides/traversing-with-pagination/

于 2019-03-22T09:38:57.317 回答