Python新手求教:如何逐个传递外部列表中的Rest API请求参数
遍历TypeID列表并处理API分页收集结果
我是Python及API开发新手,现有存储在外部.py文件中的typeid列表:
typeid=['1','12','32','1000','9'],已在主程序中导入该列表(命名为activitytypeids)。我需要将列表中的每个元素作为activityTypeIds参数逐个传入Rest API的GET请求,同时处理接口返回的分页(moreResult),将所有请求结果的JSON数据收集到results中。当前代码仅调用了列表的第一个元素,不清楚如何遍历所有typeid以实现需求,现有代码如下:# activity type id store as following in other .py file typeid=['1','12','32','1000','9'] #importing the file in main program file. From typeid list import activitytypeids act1 = requests.get(host + '/rest/v1/activities.json', params={ 'activityTypeIds': activitytypeids[0] }).text json_obj = json.loads(act1) results.append(json_obj) more_result = json_obj['moreResult'] while True: act1 = requests.get(host + '/rest/v1/activities.json', params={ 'activityTypeIds': activitytypeids[0] }).text json_obj = json.loads(act1) results.append(json_obj) more_result =json(results['moreResult']) if not more_result: break
修复后的代码
import requests import json from typeid_list import activitytypeids # 修正导入语法错误 results = [] host = "你的API主机地址" # 替换为实际的API主机地址 # 遍历每个typeid,逐个发起请求 for type_id in activitytypeids: more_result = True # 若API需要分页参数(如offset、page),需在此初始化,比如offset = 0 while more_result: params = {'activityTypeIds': type_id} # 若API需要分页参数,添加到params中,比如params['offset'] = offset # 发送请求并解析JSON response = requests.get(f"{host}/rest/v1/activities.json", params=params) json_obj = response.json() # 收集结果 results.append(json_obj) # 更新分页状态 more_result = json_obj.get('moreResult', False) # 若API需要分页参数,更新参数值,比如offset += len(json_obj.get('data', [])) print(f"共收集到 {len(results)} 条返回结果")
关键修改说明
- 遍历列表:用
for type_id in activitytypeids循环替代固定取第一个元素的写法,确保每个typeid都被处理。 - 修正语法错误:修复导入语句的拼写错误,改为符合Python规范的
from typeid_list import activitytypeids(假设外部文件名是typeid_list.py)。 - 简化JSON解析:直接使用
response.json()解析返回结果,无需手动调用json.loads(),更简洁可靠。 - 修复分页逻辑:原代码中
more_result = json(results['moreResult'])是错误写法,改为json_obj.get('moreResult', False),同时初始化more_result = True保证分页循环能启动。 - 分页参数提示:多数API分页需要额外参数(如
offset、page或nextToken),如果你的API也是如此,需要在代码中添加对应参数的初始化和更新逻辑,否则会重复请求第一页数据。
内容的提问来源于stack exchange,提问作者CanIget eb1
相关产品推荐
相关产品推荐

