使用 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。
在 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。