Postman循环链式调用3个API删除客户订单历史时迭代中断问题
Postman链式调用中断问题修复方案
问题根因
- API#2的Tests脚本中使用了未定义变量
receiptHandles,你实际需要判断的是partNumbers数组的长度 - 调用API#3后没有指定后续跳转逻辑,导致API#3执行完成后流程直接终止
- 原API#2的Pre-request Script中放置了循环跳转逻辑,插入API#3调用时跳转链路会断裂
修改步骤
1. 调整API#2的Pre-request Script
删除原有跳转逻辑,仅保留变量赋值功能:
var orderIds = JSON.parse(pm.variables.get('orderIds')); var index = parseInt(pm.variables.get('orderIdsIndex')); pm.variables.set('orderId', orderIds[index]);
2. 重写API#2的Tests脚本
修正判断条件,调整跳转逻辑:
const responseJson = pm.response.json(); var partNumbers = []; for (var key in responseJson){ // 增加判空逻辑,避免PartNumber为null时报错 if(responseJson[key]?.PartNumber) { partNumbers.push(responseJson[key].PartNumber); } } pm.variables.set('partNumbers', JSON.stringify(partNumbers)); var orderIds = JSON.parse(pm.variables.get('orderIds')); var currentIndex = parseInt(pm.variables.get('orderIdsIndex')); if (partNumbers.length != 0) { // 存在待删除的partNumber,先跳转到API#3执行删除 postman.setNextRequest('API#3'); }else{ // 无待删除数据,直接判断是否还有下一个orderId需要处理 if(currentIndex + 1 < orderIds.length) { pm.variables.set('orderIdsIndex', currentIndex + 1); postman.setNextRequest('API#2'); } else { // 所有orderId处理完成,终止流程 postman.setNextRequest(null); } }
3. 为API#3新增Tests脚本
执行完删除操作后控制流程继续下一轮迭代:
var orderIds = JSON.parse(pm.variables.get('orderIds')); var currentIndex = parseInt(pm.variables.get('orderIdsIndex')); if(currentIndex + 1 < orderIds.length) { // 还有未处理的orderId,索引+1后跳回API#2 pm.variables.set('orderIdsIndex', currentIndex + 1); postman.setNextRequest('API#2'); } else { // 所有orderId处理完成,终止流程 postman.setNextRequest(null); }
注意事项
你当前API#3的请求体写法{"partNumberList": {{partNumbers}}}是符合要求的,partNumbers变量是JSON序列化后的数组,直接替换后可以被正确识别为合法JSON格式。
内容的提问来源于stack exchange,提问作者ontherocks
相关产品推荐
相关产品推荐

