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

如何在Postman中基于外部嵌套JSON的每次迭代执行多API请求?

Postman预请求脚本处理嵌套数组迭代问题

问题背景

现有如下JSON迭代数据源:

[
  {
    "sequence": "CheckCompany",
    "company": ["Google", "Microsoft"]
  },
  {
    "sequence": "CheckFunction",
    "function": ["Func1", "Func2"]
  }
]

需要实现:

  • 迭代1(对应第一个对象):依次调用API,分别传入company=Google、company=Microsoft
  • 迭代2(对应第二个对象):依次调用API,分别传入function=Func1、function=Func2

Postman默认迭代机制说明

Postman默认迭代逻辑是遍历顶层数组的每个元素:你的JSON顶层有2个对象,所以默认会执行2次迭代。每次迭代时,pm.iterationData返回当前顶层对象(第一次是带company数组的对象,第二次是带function数组的对象),不会自动遍历对象内部的嵌套数组。因此需要手动在预请求脚本中处理内部数组的遍历和API调用。

JScript实现方案

在请求的预请求脚本中添加以下代码,即可实现需求:

// 获取当前迭代的数据源对象
const currentData = pm.iterationData.toObject();

// 定位当前对象中的数组字段(假设每个迭代对象仅包含一个数组字段)
const targetArrayKey = Object.keys(currentData).find(key => Array.isArray(currentData[key]));
if (!targetArrayKey) {
    console.log("当前迭代对象中无数组字段,跳过处理");
    return;
}

// 遍历数组元素,逐个发送API请求
currentData[targetArrayKey].forEach(item => {
    // 构造请求配置,复用当前请求的URL和方法
    const requestConfig = {
        url: pm.request.url.toString(),
        method: pm.request.method,
        // 根据API参数格式调整,这里以form-data为例
        body: {
            mode: 'formdata',
            formdata: [{ key: targetArrayKey, value: item }]
        }
    };

    // 发送同步请求,确保按顺序执行
    pm.sendRequest(requestConfig, (error, response) => {
        if (error) {
            console.error(`处理${item}失败:`, error);
        } else {
            console.log(`处理${item}成功,响应状态码: ${response.code}`);
            // 可选:将响应结果存入环境变量,供后续步骤使用
            // pm.environment.set(`result_${item}`, response.json());
        }
    });
});

关键说明

  1. 参数格式适配:如果你的API使用URL编码、JSON格式参数,需要修改body部分配置。例如用JSON格式的话:
    body: {
        mode: 'raw',
        raw: JSON.stringify({ [targetArrayKey]: item })
    }
    
  2. 执行顺序:forEach会按数组顺序触发请求,pm.sendRequest在预请求脚本中会保证请求完成后再进行下一个(同步执行)。
  3. 容错处理:代码中增加了数组字段的判断,避免无数组的迭代对象引发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:05:21