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

Python发起API请求时如何通过变量传递多个不同productId参数

问题根因

你之前用逗号分隔多个productId传参不生效,是因为这个接口是典型的单资源路径设计:URL路径段的{productId}是路径参数,路由层只会匹配单个合法ID值,本身没有做多ID批量提交的支持,不管你怎么在这个位置拼多ID,接口都无法识别。

实现方案

你现有代码已经完成了Excel逐行读取、三个字段的匹配组装,不需要额外找特殊的批量传参方式,只要在循环内针对当前行拿到的ProductId动态拼接对应请求URL,逐次发送请求即可。如果数据量较大担心触发接口限流,可以在请求间加固定间隔。

修改后的代码
import time
import requests

# 定义URL模板,预留productId动态填充位
URL_TEMPLATE = "https://myaccountname.mymarket.com.br/api/catalog/pvt/getimages/{productId}/file"

headers = {
    "Accept": "application/json",
    "Content-Type": "application/json",
    "APPKEY": "替换为你的实际APPKEY",
    "APPTOKEN": "替换为你的实际TOKEN" 
}

for row_idx, name in enumerate(spreedsheet["Name"]):  
    current_id = str(int(spreedsheet.loc[row_idx, "ProductId"]))  
    current_img_url = str(spreedsheet.loc[row_idx, "Url"])
    # 为当前商品拼接专属请求URL
    request_url = URL_TEMPLATE.format(productId=current_id)
    
    payload = {
        "Name": name, 
        "ProductId": current_id,
        "Url": current_img_url
    }

    try:
        resp = requests.post(
            request_url,
            headers=headers,
            json=payload,
            timeout=10
        )
        print(f"商品ID[{current_id}] 请求完成,状态码:{resp.status_code}")
        resp_result = resp.json()
        # 此处可自行添加响应结果处理逻辑,比如记录成功/失败状态
    except Exception as e:
        print(f"商品ID[{current_id}] 请求异常:{str(e)}")

    # 若接口有频率限制,可取消下行注释,设置每次请求间隔(单位秒)
    # time.sleep(0.5)
注意事项
  • 不要强行尝试单请求传多ID:接口路由本身不支持的前提下,任何多ID拼接、数组传参的方式都不会生效,逐次构造单ID请求是兼容性最高的方案
  • 如果单批次处理的数据量超过1000条,可以先小批量测试确认接口的限流阈值,再考虑用异步/多线程提升处理速度
  • 建议新增一列记录每条请求的返回结果,方便后续补处理失败条目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:42:28