【发布时间】:2015-06-04 06:45:57
【问题描述】:
【问题讨论】:
标签: github-api
【问题讨论】:
标签: github-api
这是一个非常有趣的问题,我想我已经找到了答案。让我们使用 GitHub top user 图表随机选择 Ocramius 及其 299 星存储库,可从 this address 以 JSON 形式获得。
现在让我们尝试通过curl -I "https://api.github.com/users/Ocramius/starred" 查询标题。我们得到一个看起来很有希望的标题:
链接:https://api.github.com/user/154256/starred?page=2; rel="下一个", https://api.github.com/user/154256/starred?page=10; rel="最后"
这个标题来自the pagination feature of the API,那么如果我们用curl -I "https://api.github.com/users/Ocramius/starred?per_page=1"要求每页有一条记录会发生什么?
链接:https://api.github.com/user/154256/starred?per_page=1&page=2; rel="下一个", https://api.github.com/user/154256/starred?per_page=1&page=299; rel="最后"
啊哈!如果我们解析这个RFC5988 HTTP 头,我们可以去掉标记为rel="last" 的页码,正确答案是299!
【讨论】:
GET 然后解析 JSON 返回一样方便和直接,并且网络开销略少。此外,这种技术应该适用于所有未明确返回计数的 API。
对Ken Y-N的回答的建议:
当用户只有一个或零个星号时,api 将响应没有Link 标头。
所以当response没有Link header的时候,你可以直接从response body中JSON-ARRAY的长度得到星号,可以是0也可以是1。
【讨论】: