You need to enable JavaScript to run this app. 无编程基础时如何将首次API获取的设备ID传入后续链式API调用
优惠活动
大模型
产品
解决方案
定价
更多

无编程基础时如何将首次API获取的设备ID传入后续链式API调用

重复查询参数拼接的实操实现

之前通过ID_LIST变量拼接参数不生效的核心原因:requests对字典类型的params参数做序列化时,遇到字典值为列表的场景,会自动将列表内容拼接为逗号分隔的单参数格式(最终生成ids=id1,id2,id3的链接),和接口要求的多次携带ids=键的格式不匹配。

步骤1:留存有效设备ID列表

在原有可正常运行的设备列表查询逻辑中,不要仅逐行打印设备ID,同步将有效ID存入Python列表,自动过滤空行:

device_id_list = []
# 在原有逐行获取、打印设备ID的代码分支中,追加存储逻辑
for raw_id in 设备查询接口返回的逐行内容:
    clean_id = raw_id.strip()
    if clean_id: # 跳过提取过程中可能出现的空行
        device_id_list.append(clean_id)

步骤2:构造符合格式要求的请求参数

requests库支持传入元组列表格式的参数值,可原生生成多重复键的查询参数,完全不需要手动拼接URL字符串:

# 遍历ID列表,逐一生成("ids", 对应ID值)的元组序列
request_params = [("ids", id_item) for id_item in device_id_list]

# 调用设备详情接口,直接复用你之前调试通过的OAuth2认证逻辑
detail_resp = requests.get(
    url="https://api.example.com/devices/entities/devices/v1",
    params=request_params,
    # 直接沿用你现有脚本里已验证正常的认证请求头即可
    headers=你之前写好的认证头字典
)

效果校验与避坑

  • 请求发出后,可通过打印detail_resp.url核对最终生成的请求链接,格式会和接口要求的示例完全一致
  • 不要手动把ID通过&ids=字符串硬拼到URL末尾,一旦ID中包含空格、&、=这类特殊字符,会直接导致参数解析错误;requests内置的params处理会自动完成URL编码,比手动拼接可靠性高很多
  • 避免直接以字典形式将列表值传入params(即params={"ids": device_id_list}),这是之前参数拼接不生效的核心原因,requests对这类入参的序列化规则和接口要求不匹配

内容的提问来源于stack exchange,提问作者endless_nameless

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 17:15:03