【问题标题】:Get user total starred count using Github API v3使用 Github API v3 获取用户总星数
【发布时间】:2015-06-04 06:45:57
【问题描述】:

doc,我可以使用以下方法列出已加星标的存储库:

GET /users/:username/starred

但我似乎无法直接获得用户的星标总数。

我错过了什么吗?

【问题讨论】:

    标签: github-api


    【解决方案1】:

    这是一个非常有趣的问题,我想我已经找到了答案。让我们使用 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!

    【讨论】:

    • 这无疑是一种可行且聪明的方法。我仍然对更方便和直接的方式持开放态度。感谢您的帮助。
    • @skyline75489 我刚刚向 GitHub 支持部门发送了电子邮件,看看这有多可靠。然而,我认为它与执行GET 然后解析 JSON 返回一样方便和直接,并且网络开销略少。此外,这种技术应该适用于所有未明确返回计数的 API。
    • @skyline75489 GitHub 支持表示“我们向只对总数感兴趣的用户推荐相同的方法,因此对于支持分页和“最后”相对的端点来说,它在这个意义上是安全可靠的。 ",看来可以放心使用了。他们还表示,他们不打算添加直接的“计数”字段或端点。
    • 好吧。我会接受这个答案。再次感谢。
    【解决方案2】:

    Ken Y-N的回答的建议:

    当用户只有一个或零个星号时,api 将响应没有Link 标头。

    所以当response没有Link header的时候,你可以直接从response body中JSON-ARRAY的长度得到星号,可以是0也可以是1。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-17
      • 2017-03-28
      • 1970-01-01
      • 2017-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      相关资源
      最近更新 更多