Postman 如何在不同接口之间传递数据?图文教程

Postman 提供了多种方式来实现数据的传递和共享,主要可以通过环境变量、全局变量、集合变量和局部变量来存储数据,并在接口之间传递数据。

用 Apifox,节省研发团队的每一分钟

Postman 如何在不同接口之间传递数据?图文教程

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

Postman 是一个强大的 API 开发工具,它使得开发者可以发送请求、测试和文档化 API。在实际使用中,我们经常需要在不同接口之间传递数据,比如前一个请求的响应数据需要作为后一个请求的输入参数、将获取到的 token 凭证作用于全局的其它接口等。Postman 提供了多种方式来实现数据的传递和共享,主要可以通过环境变量、全局变量、集合变量和局部变量来存储数据,并在接口之间传递数据,详情见下文。

初识 Postman 变量

Postman 中提供了多种类型的变量,以便于管理和使用数据:

  • 环境变量:特定于环境的变量,适用于模拟不同的开发、测试和生产环境。
  • 全局变量:在所有环境下都可以访问的变量。
  • 集合变量:仅在特定 Postman 集合范围内有效的变量。
  • 局部变量(临时变量):仅在当前请求的预请求脚本或测试脚本中临时存在的变量。

使用环境变量传递数据

环境变量非常适合存储特定环境下需要的配置信息,比如 API 的域名、认证 token 等。通过环境变量传递数据的步骤如下:

1.创建和选择环境

Postman 的左侧边栏,点击“Environments”选项,然后点击“+”创建一个新环境,创建环境后,定义你需要的变量及其初始值。

Postman 在不同接口之间传递数据

2.在请求中使用变量

在构建请求 URL 或者请求体时,可以通过{{variableName}}的形式使用环境变量。比如你在环境中定义了一个变量 host,host 里面的值就是 API 的域名,比如 localhost:8080,你在接口中引用的时候,可以直接引用定义的变量,例如:

{{host}}/api/v1
Postman 在不同接口之间传递数据

3.在脚本中动态设置环境变量

假设第一个请求返回了一个需要在后续请求中使用的资源 ID,你可以在第一个请求的 Tests 脚本中添加代码来更新环境变量,比如接口返回的响应数据结构如下所示:

{
    "code": "0",
    "data": {
        "id": "5280"
    },
    "message": "success"
}

那么你的 Tests 脚本可以写成下面这样,其中NAME_ID就是将返回的 id 获取到之后,存储到环境中的环境变量。

var body = pm.response.json();

var NAME_ID = body.data.id;

console.log("NAME_ID:" + NAME_ID);

pm.environment.set("NAME_ID", NAME_ID);
Postman 在不同接口之间传递数据

发送请求后,Postman 会自动将其提取到环境变量中。

Postman 在不同接口之间传递数据

4.使用环境变量

只要在环境变量中有数据,那么就可以通过 {{}}来引用这个环境变量,这样就能达到接口间传递数据的目的。例如上面的 id 获取到之后,就可以在接口的参数中使用,它可能是这样的:

{{host}}/pet/{{NAME_ID}}

也可能是这样的:

{{host}}/pet?id={{NAME_ID}}
Postman 在不同接口之间传递数据

如果将你一个 token 凭证存储在了环境变量中,比如下面这样:

Postman 在不同接口之间传递数据

token 凭证一般用来鉴权,我们希望这个 token 凭证在发送请求的时候能够自动携带在接口上,因为我们不可能一条接口一条接口的来引用这个 token,这样太麻烦了。要作用于全局接口,你可以在集合中设置,如下图所示,这样这个集合下的接口在发送请求时,就会携带这个 token 凭证。

Postman 在不同接口之间传递数据

有一点要注意,在集合中设置了鉴权的 token 后,在接口中需要选择“Inherit auth from parent”,也就是继承父级(继承自集合中设置的 token),不然不会生效的。

Postman 在不同接口之间传递数据

利用全局变量进行数据共享

全局变量的使用方法类似于环境变量,不过它们在任何环境下都可用。适用于那些在多个环境之间共享的数据。设置全局变量的方法如下:

pm.globals.set("variableName", value);

集合变量的应用

集合变量适用于仅在特定 Postman 集合中共享数据的场景。在集合的“编辑”菜单中,你可以添加和管理这些变量。这些变量同样通过{{variableName}}的形式在请求中使用,使用方法跟环境变量是一样的,就是作用的范围不一样。

Postman 在不同接口之间传递数据

局部变量的使用

局部变量或临时变量非常适合存储仅在当前请求或脚本执行期间需要的数据。它们不会被永久保存在 Postman 中,也不会对其他请求或环境产生影响。设置局部变量如下:

pm.variables.set("variableName", value);


比 Postman 更好用的工具:Apifox


Apifox 中进行接口间的数据传递会更加简便,你可以通过可视化的方式来提取响应数据到环境变量中,而不需要编写繁琐的脚本。

1.提取变量

跟上面一样,假如你需要提取接口返回的 ID 或者 token 凭证,你可以在接口的【后置操作】中选择“提取变量”

Postman 在不同接口之间传递数据

然后填写变量名称,变量类型(环境变量、全局变量、局部变量)、选择提取来源等,填写后保存即可。

Postman 在不同接口之间传递数据

保存后,发送请求,你会看到环境管理中多了一个环境变量,是不是很方便?同样的,token 凭证也是这样的操作,具体的不再赘述。

Postman 在不同接口之间传递数据

2.使用变量

当变量存储到“环境管理”中的时候,我们就可以在其它接口中引用了,在 Apifox 中引用的时候,是有智能提示的,如下图:

Postman 在不同接口之间传递数据

除了在接口中应用,我们在提取 token 凭证的时候一般是让它作用于项目的全部接口的,所以你还可以在【根目录->Auth】中选择设置,这样项目中的接口在发起请求时就自动携带上 token 凭证了,快去试试吧!

Postman 在不同接口之间传递数据

接口发起请求时自动携带凭证。

Postman 在不同接口之间传递数据

总结

通过合理使用 Postman 中的变量类型,可以实现数据在不同请求间的有效传递和共享。这不仅可以提高测试的灵活性和效率,也有助于模拟复杂的 API 交互场景。在实际开发和测试工作中,掌握这些技能将非常有用。

Apifox 新版
Apifox 

知识扩展: