如何循环发送API请求直至获取cursor为0的响应?
用While循环实现分页API请求直至完成
核心逻辑
- 初始将
cursor设为"0" - 启动while循环,只要当前
cursor不等于"0"就持续发送请求 - 每次请求后解析响应,提取新的
cursor值传入下一次请求 - 可选:收集每一页返回的
keys数据
Python 代码实现
import requests # 替换为你的实际配置参数 API_HOST = "你的API主机地址" APP_ID = "你的应用ID" REST_API = "你的REST API版本" BASE_URL = f"{API_HOST}/{APP_ID}/{REST_API}/hive/Management/set/keys" # 初始化变量 cursor = "0" page_size = 5 all_keys = [] while cursor != "0": # 构造请求参数 request_params = { "filterPattern": "*", "pageSize": page_size, "cursor": cursor } try: # 发送GET请求 resp = requests.get(BASE_URL, params=request_params) resp.raise_for_status() # 捕获HTTP状态码错误 # 解析响应JSON resp_data = resp.json() # 合并当前页的keys到总列表 all_keys.extend(resp_data.get("keys", [])) # 更新cursor为返回的新值 cursor = resp_data.get("cursor", "0") print(f"当前cursor: {cursor}, 已累计收集{len(all_keys)}条数据") except requests.exceptions.RequestException as err: print(f"请求失败: {err}") # 可选:出错时可选择退出循环或添加重试逻辑 break print("数据获取完成,总条数:", len(all_keys))
关键说明
- 循环终止条件:当服务器返回
cursor="0"时,循环结束,代表没有更多分页数据 - 参数传递:每次请求都会携带最新的
cursor,确保获取下一页内容 - 异常处理:捕获网络请求、HTTP错误,避免程序意外崩溃
- 数据收集:如果不需要保存所有
keys,可以去掉all_keys相关代码,只保留cursor更新逻辑
注意事项
- 务必替换代码中
API_HOST、APP_ID、REST_API的占位值为你的实际配置 - 确认API返回的
cursor类型(示例中是字符串,所以用字符串判断相等) - 若API有限流机制,可添加
time.sleep(1)这类延迟,避免触发限制
内容的提问来源于stack exchange,提问作者Nazariy Dmytryshyn
相关产品推荐
相关产品推荐

