如何使用Curl遍历自定义ID列表执行REST API删除操作及Python删除请求404问题解析
关于批量删除REST API资源的问题解答
1. Python删除请求返回404错误的原因
你遇到的404错误核心问题是请求URL中的变量没有被正确解析。在你的删除代码里,URL写死成了'https://api.onelink.com/api/v1/workspace_allocations/fn'——这里的fn只是字符串的一部分,并没有被替换成循环里的实际ID值。服务器收到的请求路径是固定的/workspace_allocations/fn,这个路径显然不存在,所以返回404(资源未找到)。
修正方法很简单,用Python的f-string把ID变量嵌入到URL中,修改后的代码如下:
headers = { 'Authorization': 'Bearer ********-*******-*************', } for fn in workspace_allocations1: # 用f-string将动态ID插入URL response = requests.delete(f'https://api.onelink.com/api/v1/workspace_allocations/{fn}', headers=headers) print(f"处理ID {fn}: {response}")
这样每个请求都会生成对应ID的合法URL,就不会再出现404错误了。
2. 使用Curl遍历ID列表执行批量删除
当然可以用Shell脚本配合Curl完成批量删除,下面是一个Bash脚本示例,直接复用你拿到的ID列表:
#!/bin/bash # 定义需要删除的资源ID列表 ALLOCATION_IDS=( '123697406' '123957117' '123957491' '123983488' '124074207' '124203018' '124229335' '124230125' '124246767' '124272164' '124272180' '124380726' '124397894' '124397895' '124397911' '124397912' '124397915' '124397923' ) # 遍历ID执行删除请求 for id in "${ALLOCATION_IDS[@]}" do echo "正在删除资源ID: $id" # 替换为你的真实Bearer令牌 curl -X DELETE "https://api.onelink.com/api/v1/workspace_allocations/$id" \ -H "Authorization: Bearer ********-*******-*************" echo -e "\n" done
使用步骤:
- 将上述代码保存为
delete_allocations.sh文件 - 执行
chmod +x delete_allocations.sh赋予脚本执行权限 - 替换脚本中的Bearer令牌为你的真实授权令牌
- 运行脚本:
./delete_allocations.sh
额外提示:
- 可以在curl命令后添加
-v参数查看详细请求日志,方便排查问题 - 如果API有速率限制,建议在循环中加入
sleep 1(等待1秒)避免触发限流 - 可以检查curl的返回状态码,确保删除操作成功完成
内容的提问来源于stack exchange,提问作者anish anil




