gpt4 book ai didi

github - 如何获取从 Github API 获取的数据的结果页数以进行请求?

转载 作者:行者123 更新时间:2023-12-01 00:53:58 25 4
gpt4 key购买 nike

我不使用 CURL,只使用 jQuery、AJAX 和 JS 从 Github API 获取信息。我正在使用这样的 URL 来获取有关问题的信息-
https://api.github.com/repos/jquery/jquery/issues

但是结果出现在多个页面中,因为 Github API 使用了分页功能。使用 CURL 时,我们会了解 header 信息,其中还显示了结果页面的数量,但我没有使用 CURL,而是使用 jQuery 和 AJAX 直接从上述 API url 请求数据,因此我无法获取上述 header 信息网址。我想使用上述 jquery/jquery 存储库和其他一些存储库的 URL 来计算打开和关闭的问题以及打开和关闭的 PR 的数量,但由于某些存储库存在很多问题,因此我在多个页面中得到结果.

我知道可以通过 URL 传递的“page”和“per_page”GET 参数以获取该结果页面并显示每页的多个结果(例如 - 100),如下所示 -
https://api.github.com/repos/jquery/jquery/issues?page=5&per_page=100

我不想手动检查结果页数。我希望我的脚本能够自动获取结果页面信息的数量,以便我可以创建一个循环并遍历所有页面以获取有关所有问题的信息。

例如如果我知道结果页面的数量是 8,那么我可以创建一个这样的循环,以从所有结果页面获取有关所有问题的信息-

var number_of_pages=8;
var issues_information;
for(var nof=1; nof<=number_of_result_pages;nof++){
var URL='https://api.github.com/repos/jquery/jquery/issues?page='+nof+'&per_page=100';
$.getJSON(URL, function(json)){
issues_information=json;
}
}

其中“issues_information”将获取从 Github API 获取的 JSON 数据。但我无法获得特定 API 调用的结果页数。

有人能告诉我如何从 Github API 获取请求的结果页数吗?请给出示例代码、URL 格式等。

最佳答案

来自 docs :

Information about pagination is provided in the Link header of an API call. For example, let's make a curl request to the search API, to find out how many times Mozilla projects use the phrase addClass:

curl -I "https://api.github.com/search/code?q=addClass+user:mozilla" The -I

parameter indicates that we only care about the headers, not the actual content. In examining the result, you'll notice some information in the Link header that looks like this:

Link:
<https://api.github.com/search/code?q=addClass+user%3Amozilla&page=2>;
rel="next",
<https://api.github.com/search/code?q=addClass+user%3Amozilla&page=34>;
rel="last"

Let's break that down. rel="next" says that the next page is page=2. This makes sense, since by default, all paginated queries start at page 1. rel="last" provides some more information, stating that the last page of results is on page 34. Thus, we have 33 more pages of information about addClass that we can consume. Nice!



所以要迭代整个页面,只需继续请求页面,直到链接标题中没有“下一个”。

这是一些显示逻辑的python代码:
params = {'page': 1, 'per_page':100}
another_page = True
api = GH_API_URL+'orgs/'+org['login']+'/teams'
while another_page: #the list of teams is paginated
r = requests.get(api, params=params, auth=(username, password))
json_response = json.loads(r.text)
results.append(json_response)
if 'next' in r.links: #check if there is another page of organisations
api = r.links['next']['url']
else:
another_page=False

关于github - 如何获取从 Github API 获取的数据的结果页数以进行请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29518253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com