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

Python迭代API数据发PUT请求报TypeError:'int'对象不可迭代错误

报错根因

你的代码有两个核心问题直接触发该报错:

  1. 接口返回值处理错误:response.content拿到的是原始响应字节串(bytes类型),并非解析后的结构化接口数据。你通过索引data[i]取值时,拿到的是单个字节对应的整数值,完全不是接口返回的单条帖子内容。
  2. 请求传参错误:requests库发送PUT请求时,会尝试遍历你传入的data参数构造请求体,你传入的是单个整数,库无法遍历整数,就会抛出TypeError: 'int' object is not iterable错误,和错误栈的触发位置完全匹配。
修复方案

按照以下步骤调整代码即可:

  • 替换响应解析逻辑:用response.json()直接把接口返回的JSON数组解析为Python列表,列表内每个元素就是单条帖子的字典数据,不要使用原始字节串response.content做迭代。
  • 调整迭代逻辑:直接遍历解析后的列表,需要索引时用enumerate获取即可,不要通过字节长度生成索引去取单个字节。
  • 修正PUT请求传参:发送单条数据时使用json参数传值,requests会自动完成JSON序列化和请求头设置,避免传值类型错误。
修正后完整代码
import requests

# 拉取源数据
response = requests.get('https://jsonplaceholder.typicode.com/posts')
data = response.json()  # 正确解析JSON为列表

# 迭代发送到自有服务器
# 注意:BASE变量值末尾要带斜杠,例如 "http://your-server-ip:port/"
for index, item in enumerate(data):
    put_resp = requests.put(f"{BASE}status/{index}", json=item)
    print(put_resp.json())
注意事项
  • 请确认BASE变量末尾带有路径斜杠,否则会出现路径拼接错误,例如BASE = "http://127.0.0.1:8000"时,拼接后路径会变成错误的http://127.0.0.1:8000status/0。
  • 如果你必须使用data参数传值而非json参数,需要提前用json.dumps()把字典数据转成JSON字符串,同时手动添加Content-Type: application/json请求头,否则自有服务端可能无法正确解析请求体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:15:27