2016-01-29 39 views
0

我正在尝试使用V3 API在GitHub上列出公共存储库的所有版本。下面是我提出要求:无法在GitHub V3 API中分页发布

curl -is -H 'Accept: application/vnd.github.v3+json' \ 
    https://api.github.com/repos/ffmpeg/ffmpeg/releases 

的响应头我收到回在这里:

HTTP/1.1 200 OK 
Server: GitHub.com 
Date: Fri, 29 Jan 2016 20:23:15 GMT 
Content-Type: application/json; charset=utf-8 
Content-Length: 29612 
Status: 200 OK 
X-RateLimit-Limit: 60 
X-RateLimit-Remaining: 19 
X-RateLimit-Reset: 1454099558 
Cache-Control: public, max-age=60, s-maxage=60 
ETag: "947039722a1073c5279a9fd39d00c0bf" 
Vary: Accept 
X-GitHub-Media-Type: github.v3; format=json 
Access-Control-Allow-Credentials: true 
Access-Control-Expose-Headers: ETag, Link, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth- 
Access-Control-Allow-Origin: * 
Content-Security-Policy: default-src 'none' 
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload 
X-Content-Type-Options: nosniff 
X-Frame-Options: deny 
X-XSS-Protection: 1; mode=block 
Vary: Accept-Encoding 
X-Served-By: b0ef53392caa42315c6206737946d931 
X-GitHub-Request-Id: XXXXXXXXXXXXXXXXXXXXXXXXXXXX 

通知缺乏Link响应头的?在响应主体中,我只能回到7个版本,而我似乎无法通过手动指定?page=N查询参数向前或向后分页。

对于一些背景,FFmpeg有大约226个版本目前in its GitHub repository,我只得到其中的7个,无法通过他们分页。

我在这里做错了什么,会限制我从GitHub v3 API返回的响应?

回答

0

GitHub将其专有版本功能与常规Git标签混合在一起。你看到的ffmpeg的许多“发布”实际上只是标签。

这是example of a real release。请注意它如何包含比a tag does更多的信息。尽管与发行混合在其Web UI显示标签,GitHub的release API endpoint doesn't include regular tags

这将返回发布的名单,其中不包括尚未与发布相关的规则的Git标签。要获取Git标签列表,请使用Repository Tags API

使用tags endpoint为GitHub的建议提供了更多的成果,包括Link头,你希望:

curl -is -H 'Accept: application/vnd.github.v3+json' \ 
    https://api.github.com/repos/ffmpeg/ffmpeg/tags 
+0

所以你说的是GitHub上的网页上发布网页是表明了标签从未做过发布,因此API中的发布与标签之间存在差异? –

+1

@NaftuliTzviKay,它显示了两者。使用** Next **链接返回几页(另一个奇怪的UI问题,我想),你会看到一个真正的发布与标签混合。我不确定他们为什么这样做。 – Chris

+0

混淆AF IMO。这种差异在于Web UI做了与API不同的事情。 –