【问题标题】:How to make an api request call on a list of values?如何对值列表进行 api 请求调用?
【发布时间】:2019-09-11 16:46:25
【问题描述】:

我试图让它遍历变量列表“用户”中的每个元素,并在每个元素上调用 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 的用户信息。如何修复我的代码以使其正常工作?

【问题讨论】:

  • “我尝试创建一个 for 循环来遍历列表中的每个元素,但它不起作用。”这听起来像是要走的路,你能发布这段代码吗?
  • @C_Z_ 对不起。我的 for 循环类似于 for users in user: print(r.json())。我对 python 和一般编码很陌生,所以我不太确定如何形成 for 循环来工作。

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


【解决方案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 的部分。

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多