githubapi总是返回打开的里程碑,即使我请求关闭的里程碑

2024-03-29 08:21:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试获取所有里程碑的列表,无论它们是打开的还是关闭的。我使用一个简单的while循环:

milestoneNumbers = {}

for state in ['open', 'closed']:
    print("***" + state)
    stateJSON = {'state' : state}
    print(json.dumps(stateJSON))
    response = requests.get(
        'https://api.github.com/repos/' + username + '/' + repo + '/milestones',
        data=json.dumps(stateJSON),
        auth=(username, password))

    milestones = response.json()
    for milestone in milestones:
        print(milestone['title'] + " " + str(milestone['number']))
        milestoneNumbers[milestone['title']] = milestone['number']

print(milestoneNumbers)

问题是它会返回两次打开的里程碑。我做错什么了?你知道吗

输出:

open
{"state": "open"}
wiki pages 6
android 7
swing 0.5.4 16
lite 0.5.7 18
project 19
swing 20
premium 10
lite 0.5.6 15
closed
{"state": "closed"}
wiki pages 6
android 7
swing 0.5.4 16
lite 0.5.7 18
project 19
swing 20
premium 10
lite 0.5.6 15
{u'project': 19, u'premium': 10, u'wiki pages': 6, u'lite 0.5.7': 18, u'lite 0.5.6': 15, u'swing 0.5.4': 16, u'swing': 20, u'android': 7}


Tags: projectjsonwikipagesliteopenandroidstate
1条回答
网友
1楼 · 发布于 2024-03-29 08:21:14

您正在访问GET请求;不发送JSON,但发送URL参数:

response = requests.get(
    'https://api.github.com/repos/' + username + '/' + repo + '/milestones',
    params={'state': state},
    auth=(username, password))

它将状态作为GET参数发送。无论如何,在使用GET时,data关键字参数将被完全忽略,因此该参数从未到达GitHub服务器,并且在没有特定值的情况下默认为'state': 'open'。你知道吗

相关问题 更多 >