如何在值列表上进行api请求调用?

时间:2019-09-11 16:46:25

标签: python python-3.x api loops for-loop

我试图让它遍历变量列表“ user”中的每个元素,并在每个元素上调用API请求。现在,它仅在列表的最后一个元素上调用API。

我尝试创建一个for循环,该循环将遍历列表中每个无效的元素。它只会显示列表中最后一个用户ID的信息。

with open('config/config.json') as f:
    config = json.load(f)

API_KEY = config['API_KEY']

def users_info():

    user = ['usrid1', 'usrid2', 'usrid3', 'usrid4', 'usrid5', 'usrid6', 'usrid7']
    url = 'https://slack.com/api/users.info'
    headers = {'Accept': 'application/x-www-form-urlencoded'}
    payload = {
        'token': API_KEY,
        'user': user
    }
    r = requests.get(url, headers=headers, params=payload)

    if r.status_code == 200:
        print(r.json())

我希望它能打印出用户列表中提供的每个用户ID的用户信息。如何修正我的代码以使其正常工作?

1 个答案:

答案 0 :(得分:1)

slack documentation for this method似乎表明您每次呼叫只能获取一个用户的信息。遍历用户时,您是否尝试过在循环中创建请求,例如:

with open('config/config.json') as f:
    config = json.load(f)

API_KEY = config['API_KEY']

def users_info():
    users = ['usrid1', 'usrid2', 'usrid3', 'usrid4', 'usrid5', 'usrid6', 'usrid7']
    url = 'https://slack.com/api/users.info'
    headers = {'Accept': 'application/x-www-form-urlencoded'}
    for user in users:
        payload = {
            'token': API_KEY,
            'user': user
        }
        r = requests.get(url, headers=headers, params=payload)
        if r.status_code == 200:
            print(r.json())

您还应该考虑info here,以了解如何使用requests库时如何提高性能,尤其是Sessions上的部分。