Postman POST请求如何用键值编辑模式传递嵌套对象参数
Postman键值编辑模式拆分对象参数解决方案
实现可行性结论
该需求完全可以实现,核心通过Postman前置脚本自动拼接目标对象参数,无需调整服务端接口逻辑。
具体操作步骤
步骤1:拆分参数到键值编辑区
在请求的Body(form-data/x-www-form-urlencoded格式)或者Params(GET请求参数)的键值编辑区,按对象属性逐个添加参数,不需要加rest_data前缀,每个参数可以单独填写描述注释,环境变量支持自动补全、悬停查看值:
- 键:
session_id,值:{{sessionId}},描述:会话凭证 - 键:
dealer_number,值:{{integralinkCode}},描述:经销商编号 - 键:
customer_id,值:12345,描述:客户ID - 键:
vehicle_id,值:null,描述:车辆ID,无则传null - 键:
phone,值:5555555555,描述:联系电话 - 键:
amount,值:0.01,描述:交易金额 - 键:
reference_no,值:test1234,描述:交易流水号 - 键:
asm_user_id,值:{{userId}},描述:操作人ID - 键:
message,值:test,描述:备注信息
步骤2:添加前置脚本自动拼接对象
打开请求的「Pre-request Script」标签页,粘贴对应格式的脚本即可:
// 收集键值区所有参数 // 表单参数使用request.data,GET请求query参数使用request.url.query const params = request.data const rest_data = {} Object.keys(params).forEach(key => { // 处理null值、数值类型的格式转换 if (params[key] === 'null') { rest_data[key] = null } else if (key === 'dealer_number') { // 按需调整需要转数值的字段 rest_data[key] = Number(params[key]) } else { rest_data[key] = params[key] } }) // 覆盖请求体参数,仅保留拼接完成的rest_data // x-www-form-urlencoded格式用以下代码: pm.request.body.urlencoded.clear() pm.request.body.urlencoded.add({ key: 'rest_data', value: JSON.stringify(rest_data) }) // form-data格式替换为以下代码: // pm.request.body.formdata.clear() // pm.request.body.formdata.add({ // key: 'rest_data', // value: JSON.stringify(rest_data) // })
如果有多组同类型请求,可以把脚本放到集合级别的前置脚本中,加个自定义标识判断(比如请求描述含[auto_rest]才执行脚本),避免每个请求重复编写。
替代方案
如果不想编写前置脚本,可以切换到Body的raw JSON视图,Postman支持JSON内添加注释(发送时会自动忽略注释),也支持环境变量的自动补全、悬停查看,示例格式如下:
{ "rest_data": { "session_id":"{{sessionId}}", // 会话凭证 "dealer_number":{{integralinkCode}}, // 经销商编号 "customer_id":"12345", // 客户ID "vehicle_id":null, // 车辆ID,无则传null "phone":"5555555555", // 联系电话 "amount":"0.01", // 交易金额 "reference_no":"test1234", // 交易流水号 "asm_user_id":"{{userId}}", // 操作人ID "message":"test" // 备注信息 } }
该方案操作更简单,缺点是不如键值编辑区直观,修改参数时需要定位对应字段。
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

