使用 Github API v3 获取用户加星标总数

Get user total starred count using Github API v3

doc 中,我可以使用以下方式列出正在加星标的存储库:

GET /users/:username/starred

但是我好像不能直接获取一个用户的stared repos总数。

我是不是漏掉了什么?

这是一个非常有趣的问题,我想我已经找到了答案。让我们使用 GitHub top user chart to randomly choose Ocramius with their 299 starred repos, available in JSON form from this address.

现在让我们尝试通过 curl -I "https://api.github.com/users/Ocramius/starred" 查询 header。我们得到一个 hopeful-looking header:

Link: https://api.github.com/user/154256/starred?page=2; rel="next", https://api.github.com/user/154256/starred?page=10; rel="last"

这个header来自the pagination feature of the API,那么如果我们用curl -I "https://api.github.com/users/Ocramius/starred?per_page=1"要求每页一条记录会怎样?

Link: https://api.github.com/user/154256/starred?per_page=1&page=2; rel="next", https://api.github.com/user/154256/starred?per_page=1&page=299; rel="last"

啊哈!如果我们解析这个 RFC5988 HTTP header,我们可以去掉标记为 rel="last" 的页码,我们得到正确答案 299!

Ken Y-N的回答的建议:

当用户只有一个或零个星号时,api 将不响应 Link header。

所以当response没有Link header的时候,可以直接从response JSON-ARRAY的长度中获取加星的个数body.It就可以了为 0 或 1。