6

我正在将 github api 用于小型 Web 应用程序,有时我需要获取分页链接头

最终目标是获取每个存储库的提交总数,我找到了python 脚本并尝试将其调整为 JavaScript。

getData = $.getJSON('https://api.github.com/repos/'+user+'/'+repo+'/commits?callback=?', function (commits){

    console.log(getData.getResponseHeader('link'))
    // will return null

    console.log(getData.getAllResponseHeaders('link'))
    // will return an empty string

    console.log(commits)
    // will successfuly return my json
});

userrepo分别是用户名和他的仓库名

这是一个 Github 页面,所以我只能使用 JavaScript。

4

2 回答 2

5

有关使用 JSONP 回调的信息,请参阅 GitHub API 文档:http: //developer.github.com/v3/#json-p-callbacks

基本上,如果您使用 JSONP 调用 API,那么您将不会获得Link标头,但您将在响应 JSON 文档(即正文)中获得相同的信息。下面是来自 API 文档的示例,请注意对象Link中的属性meta

$ curl https://api.github.com?callback=foo

foo({
  "meta": {
    "status": 200,
    "X-RateLimit-Limit": "5000",
    "X-RateLimit-Remaining": "4966",
    "Link": [ // pagination headers and other links
      ["https://api.github.com?page=2", {"rel": "next"}]
    ]
  },
  "data": {
    // the data
  }
})
于 2013-01-05T09:12:23.907 回答
0

您传递给getJSON方法的函数的签名是 Type: Function(PlainObject data, String textStatus, jqXHR jqXHR )

要访问 Link 标头,您应该使用 jqXHR 对象而不是数据对象:

getData = $.getJSON(
     'https://api.github.com/repos/'+user+'/'+repo+'/commits?callback=?',
     function (data, textStatus, jqXHR){

        console.log(jqXHR.getResponseHeader('Link'))
        // will return the Header Link

        console.log(commits)
        // will successfuly return my json
    });
于 2017-02-28T09:28:49.733 回答