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

如何循环发送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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:01:01