当前位置: 首页 > news >正文

postman怎么获取上一个接口执行完后的参数

在Postman中获取上一个接口执行完后的参数,主要有以下几种方法:

1.使用环境变量(Environment Variables)

这是最常用的方法:

设置变量(在第一个接口的Tests中):

// 解析响应 const responseJson = pm.response.json(); // 将需要的值保存到环境变量 pm.environment.set("token", responseJson.token); pm.environment.set("userId", responseJson.data.userId); pm.environment.set("sessionId", responseJson.sessionId); // 也可以保存数组或对象 pm.environment.set("userData", JSON.stringify(responseJson.data));

获取变量(在第二个接口中):

// 在URL中使用 // 例如:{{baseUrl}}/users/{{userId}}/profile // 在请求体中使用 // 在Body的JSON中使用:{{token}} // 在Headers中使用 // Authorization: Bearer {{token}} // 在Pre-request Script中获取 console.log("用户ID:", pm.environment.get("userId")); console.log("Token:", pm.environment.get("token")); // 如果是JSON字符串,需要解析 const userData = JSON.parse(pm.environment.get("userData") || "{}"); console.log("用户数据:", userData);

2.使用全局变量(Global Variables)

适用于所有接口共享的数据:

设置全局变量:

// 在第一个接口的Tests中 pm.globals.set("globalToken", pm.response.json().access_token); pm.globals.set("apiVersion", "v2.0");

获取全局变量:

// 在第二个接口中 const token = pm.globals.get("globalToken"); const version = pm.globals.get("apiVersion");

3.使用集合变量(Collection Variables)

适用于当前集合内的接口共享:

设置集合变量:

// 在第一个接口的Tests中 pm.collectionVariables.set("collectionToken", responseJson.token);

获取集合变量:

// 在同一个集合的第二个接口中 const collToken = pm.collectionVariables.get("collectionToken");

4.完整示例

第一个接口:登录接口

// 登录接口的Tests标签 pm.test("登录成功", function() { const response = pm.response.json(); // 验证状态码 pm.response.to.have.status(200); // 保存token到环境变量 pm.environment.set("accessToken", response.data.accessToken); // 保存用户ID pm.environment.set("currentUserId", response.data.userId); // 保存其他需要的参数 pm.environment.set("userRole", response.data.role); console.log("Token已保存:", response.data.accessToken); console.log("用户ID:", response.data.userId); });

第二个接口:获取用户信息

// 在URL中使用 // {{baseUrl}}/users/{{currentUserId}} // 在Headers中使用 // Authorization: Bearer {{accessToken}} // 在Pre-request Script中验证 const token = pm.environment.get("accessToken"); if (!token) { console.error("Token不存在,请先运行登录接口"); // 可以停止请求 throw new Error("请先获取token"); }

5.在Pre-request Script中处理

在第二个接口的Pre-request Script中,可以处理从环境变量获取的数据:

// 获取上一个接口保存的参数 const token = pm.environment.get("accessToken"); const userId = pm.environment.get("currentUserId"); // 动态设置请求头 pm.request.headers.add({ key: "Authorization", value: "Bearer " + token }); // 动态修改URL const originalUrl = pm.request.url.toString(); pm.request.url = originalUrl.replace("{userId}", userId); // 动态设置请求体 if (pm.request.body.raw) { const body = JSON.parse(pm.request.body.raw); body.userId = userId; body.timestamp = new Date().toISOString(); pm.request.body.raw = JSON.stringify(body); }

6.使用数据变量(Data Variables)

在集合运行时使用:

// 在集合运行前设置数据 pm.variables.replaceIn("{{$guid}}"); // 生成GUID pm.variables.replaceIn("{{$timestamp}}"); // 时间戳

7.批量设置变量

可以批量从响应中提取多个值:

// 从响应JSON中提取多个参数 const response = pm.response.json(); // 批量设置 const paramsToSave = { "authToken": response.token, "expiresIn": response.expires_in, "refreshToken": response.refresh_token, "userName": response.user.name }; Object.keys(paramsToSave).forEach(key => { if (paramsToSave[key]) { pm.environment.set(key, paramsToSave[key]); } });

8.使用动态变量

Postman提供了内置的动态变量:

// 在Tests中使用 console.log("GUID:", pm.variables.replaceIn("{{$guid}}")); console.log("时间戳:", pm.variables.replaceIn("{{$timestamp}}")); console.log("随机数:", pm.variables.replaceIn("{{$randomInt}}")); // 在URL或请求体中使用 // {{$guid}} {{$timestamp}} {{$randomInt}}

9.链式调用多个接口

可以在集合中使用:

// 在Tests中调用下一个请求 if (pm.response.code === 200) { // 保存数据 pm.environment.set("orderId", pm.response.json().orderId); // 延迟后执行下一个请求 setTimeout(() => { pm.sendRequest({ url: '{{baseUrl}}/orders/{{orderId}}', method: 'GET', header: { 'Authorization': 'Bearer {{accessToken}}' } }, function (err, response) { console.log(response.json()); }); }, 1000); }

10.最佳实践

  1. 变量命名规范:使用清晰的命名,如accessToken而不是token

  2. 清理变量:不需要的变量及时清理

  3. 使用不同环境:开发、测试、生产使用不同的环境

  4. 错误处理:检查变量是否存在

  5. 文档化:在描述中说明变量的用途

// 检查变量是否存在 if (!pm.environment.get("accessToken")) { console.warn("警告: accessToken 不存在"); // 可以设置默认值 pm.environment.set("accessToken", "default-token"); } // 清理变量 pm.environment.unset("tempToken"); pm.environment.unset("tempData");

变量作用域优先级

Postman中变量的优先级(从高到低):

  1. 本地变量(Local Variables)

  2. 数据变量(Data Variables)

  3. 环境变量(Environment Variables)

  4. 集合变量(Collection Variables)

  5. 全局变量(Global Variables)

通过合理使用这些变量传递方法,你可以在Postman中轻松地实现接口间的参数传递和数据共享。

http://www.jsqmd.com/news/318985/

相关文章:

  • 深夜破防了!GPT-5.2 + Sora2 居然把我的外包私活给干没了?(附:多模态Agent逆袭指南)
  • 从爆红到实用:Moltbot(原 Clawdbot)使用初体验及本地部署指南
  • postman中的Tests,怎么获取返回的response中的stateCde
  • opencv计算机视觉--答题卡识别案例
  • Mobile库实战入门:几行代码快速集成通信功能
  • 社会网络仿真软件:NetLogo_(14).社会网络数据导入与导出
  • 开源转发器搭建全流程!
  • Springboot相关知识
  • springboot的开发
  • 软件项目总结报告
  • 极简集成Mobile库:几行代码搞定短信与网络通信
  • 2026广东最新劳动纠纷/法律顾问/婚姻家事/经济纠纷/刑事案件律师公司推荐:专业团队护航,广东鹏尚律师事务所实力出众
  • 完整教程:SCP2025T2:P14254 分割(divide) 题解
  • Java毕设项目:基于springboot的办公用品管理系统小程序的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 2026广东最新劳动纠纷机构top5推荐!深圳等地公司深度解析,高效维权保障劳资权益
  • Java的类
  • 效率工具PcDrawer(归类整理快速打开)一款高效的归类整理和快速打开工具
  • 从零开始:贯通硬件与UI的高效LCD开发全攻略
  • 实测有效的降ai率工具深度横评:手把手教你降低ai率,3分钟完成免费降aigc
  • 数字人SadTalker一张照片根据音频驱动说话数字人软件及安装教程整合版
  • 基于Air780EHV核心板的OTP核心库API使用详解!
  • 【计算机毕业设计案例】基于springboot的剧本杀游玩一体化平台小程序的设计与实现(程序+文档+讲解+定制)
  • 2026年最新的免费降ai率神器汇总:告别付费陷阱,降ai效果哪款好?【附降ai率方法】
  • 基于微信小程序的闲置物品交易平台的设计与实现
  • AI编程案例:基于 Vue3 + Leaflet 开发的中国省市两级地理数据可视化系统
  • 企业领域 - 跨部门轮岗
  • 【AIGC】Seedream 、FLUX 、qwen 及LORA
  • 科技守护温情,智慧康养让陪伴跨越距离
  • 最新“学生必考”AI证书,真的在慢慢贬值吗?
  • 2026年论文降ai最全避坑指南:3招论文降aigc奇招+5款最稳的降ai率工具深度评测