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
相关产品推荐
相关产品推荐

