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

如何在JMeter中基于前序API响应构造动态接口请求

动态填充sourceFilterInfo参数实现方案

核心逻辑是先遍历所有提取到的source、sourceUserId参数对,按要求组装成数组结构,再代入后续请求体即可,完全适配参数个数动态变化的场景:

通用逻辑

不管你用什么工具/语言实现,都可以按以下步骤处理:

  • 先确认你用正则提取到的多组参数存储规则,一般工具会自动按参数名_序号的格式存储多匹配结果,同时返回匹配总个数
  • 循环遍历所有匹配项,每次取同一序号的source和sourceUserId拼成符合要求的对象
  • 把所有对象存入数组后转成JSON字符串,存为公共变量
  • 后续请求体的sourceFilterInfo字段直接引用该公共变量即可

常用工具/场景实现示例

Postman场景

如果没用正则提取,可直接在前序请求的Tests标签里处理响应,比正则提取更稳定:

const resp = pm.response.json();
// 自动遍历响应组装数组
const sourceFilterInfo = resp.map(item => ({
    source: item.userSourceMeta.source,
    sourceUserId: item.userSourceMeta.sourceUserId
}));
// 存为环境变量
pm.environment.set("sourceFilterInfo", JSON.stringify(sourceFilterInfo));

后续请求体直接引用变量:

{
    "Answer": "My name is xyz",
    "queryChannel": "WEB_APP",
    "timeZone": "Asia/Calcutta",
    "sourceFilterInfo": {{sourceFilterInfo}},
    "contextIds": []
}

Jmeter场景

你已经用正则提取到参数的话,直接用BeanShell后置处理程序组装即可:

// 拿到正则匹配到的参数总个数
int matchCount = Integer.parseInt(vars.get("source_matchNr"));
JSONArray filterArr = new JSONArray();
for(int i = 1; i <= matchCount; i++){
    JSONObject item = new JSONObject();
    // 按序号取同一组的两个参数
    item.put("source", vars.get("source_" + i));
    item.put("sourceUserId", vars.get("sourceUserId_" + i));
    filterArr.put(item);
}
// 存为变量
vars.put("sourceFilterInfo", filterArr.toString());

后续请求体直接引用${sourceFilterInfo}变量即可。

Python代码场景

import requests, json

# 前序接口请求
pre_resp = requests.get("前序接口地址").json()
# 组装参数
source_filter_info = [
    {"source": item["userSourceMeta"]["source"], "sourceUserId": item["userSourceMeta"]["sourceUserId"]}
    for item in pre_resp
]
# 构造后续请求体
payload = {
    "Answer": "My name is xyz",
    "queryChannel": "WEB_APP",
    "timeZone": "Asia/Calcutta",
    "sourceFilterInfo": source_filter_info,
    "contextIds": []
}
# 发后续请求
requests.post("后续接口地址", json=payload)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 22:57:02