0

我需要循环我的 API 调用,直到我获取了我需要的所有数据,因为 Jira 一次只返回 50 个。

我想要一个循环,直到“总数”小于“startAt”(我认为)

我正在取回数据,但它似乎没有循环获取所有数据。

import json
import requests
import urllib3
import math


url = 'https://mydomain.atlassian.net/rest/api/2/search'

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Basic 012336',
    'Postman-Token': "0123456789"
}

parameters = {
    'jql': 'project IN (A, B, C, D, E, F, G, H, I, J, K, L, M) AND issueType=incident AND statusCategory!=Done',
    'startAt': 0,
    'maxResults': 50,
    'fields': "key,status,project,priority,issuetype,created,statuscategory"
}

response = requests.request("GET", url, headers=headers, params=parameters)
jira_data = response.json()
jira_pretty = json.dumps(json.loads(response.text), sort_keys=True, indent=4)
int_total = jira_data.get('total')
int_maxResults = jira_data.get('maxResults')
int_startAt = parameters.get('startAt')
number_pages = math.ceil(int(int_total)/int(int_maxResults))

while int_startAt < int_total:
    int_startAt += int_maxResults
    if int_total <= int_startAt:
        break

print(jira_pretty)
4

1 回答 1

1

根据提供的代码片段,您应该在startAt每次循环发送下一个 GET 请求之前更新参数。如果要减少循环次数,可以将maxResults参数设置为 100,即最大值。

退后一步,我不清楚您是如何循环发出多个请求的,至少基于提供的代码。

于 2018-12-19T00:35:52.957 回答