You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:40:18