Postman接口之间传递数据

本文通过实例演示如何在Postman中实现接口间的连续调用,关键在于利用环境变量存储并传递上一个接口返回的重要数据,如accessToken和epId,确保后续接口调用的成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概述

    在接口测试的过程中,经常会遇到一个接口的请求参数是另外一个接口的返回数据,比如登录之后获取token,下一个接口需要这个token去请求,今天就简单介绍一个接口之前的数据传递,接口测试工具为postman。

二、使用方法

1、首先,来添加一个环境变量,将请求的域名设置为环境变量,步骤如下

2、然后在接口的请求地址中将第1步中设置的环境变量添加进入,

3、填写接口请求所需的参数和headers,并点击send发送请求

4、然后我们来添加第二个请求,这个请求,需要在header中添加上接口返回的accessToken数据,所以需要将上一个接口返回的accessToken设置为环境变量,如下:

脚本:

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
// 把responseBody转为json字符串
var data = JSON.parse(responseBody);
// 设置环境变量token,供后面的接口引用


pm.environment.set("toke", data.accessToken);

5、检查环境变量有没有设置成功,如下,已经设置成功:

6、添加接口,将环境变量添加到header中,并填写请求的参数,点击send发送请求

7、现在要添加第三个接口,第三个接口不仅需要第一个接口的accessToken,还需要第二个接口返回中的一个epId,所以要将epId设置为环境变量,方式跟上面的方式相同

脚本:

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});
// 把responseBody转为json字符串
var data = JSON.parse(responseBody);
// 设置环境变量token,供后面的接口引用


pm.environment.set("epid", data.enterprises[0].epId);

8、添加第三个接口

9、发送请求查看响应

 

 

以上方法就是简单实现了接口间的数据传递。

1、PostMan接口参数化操作步骤; 2、环境变量设置步骤; 3、A接口返回值例如token赋值给B接口请求参数操作步骤; 图文并茂 1 接口参数化 第一步:点击右上角图标,打开环境配置页面,选择Globals,设置全局变量; 第二步:添加变量名称,设置对应的变量值,保存; 第三步:接口地址或者需要取值的参数value设置;注意需要取值的设置为{{变量名}},双大括号,即可取全局变量设置的值。 TIPS: 如果需要批量修改接口参数等,可导出后编辑,批量替换,再导入即可,注意需要修改接口地址以及下方的参数取值。 2 接口返回值存入环境变量 第一步:查看接口返回值; { "data": { "leaguerId": "161", "token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxNjEiLCJjcmVhdGVkIjoxNTI5NTcyNTkzMTI5LCJleHAiOjE1Mjk1Nzk3OTN9.U6qmR-Qa9sJpwxShLOC8WLPBlhLxWWiQTv5bZtyOV0mdyCSHnFBb_p6T5PBY20m_0m2AmrQZGfrv6hvHCPAaow" }, "status": 200 } 第二步:在接口的TESTS页签中输入以下内容(视返回值情况修改): pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); // 把responseBody转为json字符串 var Jsondata = JSON.parse(responseBody); // 设置环境变量access-token,供后面的接口引用 pm.environment.set("access-token ", Jsondata.data.token ); 第三步:重新发送上一个接口参数信息测试,执行后查看环境变量;如图,则表示环境变量的值已经正常存储; 3 参数化取其他接口的返回值 第一步:修改需要引用上述token值的接口参数取值,参数值value设置为{{access-token}}({{变量名}}),测试接口,正确返回即可;
<think>嗯,用户问的是Postman如何做接口之间的数据关联。这个问题我之前有接触过,但需要仔细回忆一下具体的步骤和方法。首先,数据关联通常指的是在不同的API请求之间传递数据,比如第一个接口返回的某个值,第二个接口需要用到。这在自动化测试或者流程测试中很常见。 首先,我应该考虑Postman的环境变量和全局变量。记得用户可能需要设置变量来存储第一个接口的响应数据,然后在后续的接口中使用这些变量。比如,用户登录后获取的token,需要在后续的请求头中使用。这时候,环境变量应该是一个关键点。 接下来,可能需要用到Postman的Tests脚本。在第一个请求的Tests标签里,通过JavaScript代码提取响应数据,并保存到变量中。例如,使用pm.environment.set("variableKey", value);。这部分需要确保用户知道如何解析响应,可能是JSON格式,所以用JSON.parse()方法处理响应体。 然后,在第二个请求中,如何引用这个变量呢?应该是在请求的参数、URL或者头部中使用{{variableKey}}的形式。比如在Authorization头里带上Bearer {{token}}。需要提醒用户注意变量作用域,环境变量和全局变量的区别,避免混淆。 可能还需要提到Postman的自动关联功能,比如使用pm.response.json()来获取响应数据,然后提取需要的字段。比如,用户登录后返回的token,可以用var jsonData = pm.response.json(); pm.environment.set("token", jsonData.token);。这部分需要具体示例,让用户更清楚怎么写脚本。 另外,用户可能会遇到变量未正确设置的问题,这时候需要指导他们检查脚本是否正确,或者使用console.log调试。还有,在Collection Runner或者Newman运行时的变量递是否正常,可能需要设置环境变量文件。 还要考虑到不同的响应格式,比如XML或者HTML,这时候可能需要使用cheerio库来解析,但大多数情况下是JSON。这部分可能需要简要提及,但重点放在JSON上。 最后,整理步骤,确保逻辑清晰。分点说明,从设置变量到提取数据,再到后续请求使用变量,可能还需要提到测试用例中如何验证变量是否正确递。同时,提醒用户注意环境切换,确保运行环境正确,避免变量污染。 可能还需要举一个实际的例子,比如用户登录和获取用户信息的流程,具体说明如何提取token并在下一个请求中使用。这可以帮助用户更直观地理解操作步骤。 总结下来,步骤应该是:发送第一个请求,在Tests中提取数据并保存为变量;后续请求中引用该变量;通过脚本或手动检查确保变量正确递。同时,注意事项包括变量作用域、脚本语法、环境选择等。</think>Postman 实现接口间数据关联的核心是通过 **环境变量/全局变量** 和 **脚本提取** 来实现。以下是具体操作步骤: --- ### 一、基础原理 1. **变量类型** - **环境变量**:作用于特定环境(如开发/测试/生产) - **全局变量**:全局生效,跨环境使用 - **局部变量**:仅在当前请求的脚本中有效 2. **数据递逻辑** ``` 接口A响应数据 → 脚本提取 → 保存为变量 → 接口B通过变量名调用 ``` --- ### 二、具体操作步骤 #### ▶ 步骤1:提取接口响应数据 1. 在第一个接口的 **Tests** 标签中编写脚本 ```javascript // 示例:提取登录接口返回的 token var jsonData = pm.response.json(); pm.environment.set("auth_token", jsonData.token); // 保存到环境变量 // pm.globals.set("global_var", value); // 保存到全局变量 ``` #### ▶ 步骤2:在后续接口中使用变量 1. 在第二个接口的 **Params/Headers/Body** 中通过 `{{变量名}}` 调用 ```text ► Headers 示例: Authorization: Bearer {{auth_token}} ► URL 参数示例: /user/{{user_id}} ``` --- ### 三、高级技巧 #### 1. 自动提取JSON响应值 ```javascript // 提取嵌套JSON值(如 data.user.id) pm.environment.set("user_id", pm.response.json().data.user.id); ``` #### 2. 正则表达式提取非JSON响应 ```javascript // 从HTML/XML中提取数据(示例提取<input type="hidden" value="abc123">) var regex = /value="(\w+)"/; var match = pm.response.text().match(regex); pm.environment.set("csrf_token", match[1]); ``` #### 3. 链式调用接口 ```javascript // 在 Pre-request Script 中动态计算参数 pm.environment.set("timestamp", new Date().getTime()); ``` --- ### 四、调试技巧 1. **查看变量值** - 点击右上角 👁️ 图标查看当前变量 - 使用 `console.log(pm.environment.get("auth_token"))` 打印变量 2. **自动化测试** ```javascript // 在 Tests 中验证变量是否递成功 pm.test("Check auth_token exists", function() { pm.expect(pm.environment.get("auth_token")).to.not.be.undefined; }); ``` --- ### 五、注意事项 1. **变量覆盖**:避免不同接口使用同名变量 2. **环境切换**:运行前确认已选择正确的环境 3. **数据清理**:在集合运行时配置 `Clear variables` 防止旧数据残留 --- ### 六、完整示例场景 1. **接口A:登录获取token** ```javascript // Tests 脚本 var jsonData = pm.response.json(); pm.environment.set("token", jsonData.access_token); ``` 2. **接口B:查询用户信息** ``` GET /user/profile Headers: Authorization: Bearer {{token}} ``` --- 通过以上方法,可实现接口间的身份令牌递、动态参数依赖等复杂场景。建议通过 **Collection Runner** 批量测试验证流程完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

General_单刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值