0. 问题背景

在后端开发过程中,我们需要做接口自测或者问题排查需要使用postman,但是大多数时候我们的系统都是有登录的,这个时候就需要请求携带token,如果每次请求的时候都去请求一次登录接口获取一个token然后再放入接口的header中,就显得很笨。下面就是解决这个问题的步骤。

1. 使用变量

postman是支持变量的,根据不同的作用域,分为全局变量、环境变量、集合变量等。这里我们解决登录token问题是要在所有的接口中起作用的,所以我们这里需要设置的是全局变量。

如上图,我再全局变量里设置了3个变量,可以看到前2个变量是有初始值和当前值的,但是第3个变量auth也就是token是只有当前值的。这是因为在我目前的项目中,前两个变量是固定的,所以我给了一个初始值,那当前值是根据初始值自动填充的,而token由于每次登录都会变化,所以我没有设置初始值,当前值是由脚本填充的。

2. 脚本填充全局变量中的token

每次登录之后会获取有效的token,那么我们在请求登录接口之后拿到token填充到全局变量中不就不用每次去修改token了嘛,所以如下:

如上图,在登录接口的Teststab中,我写了一个脚本(js),拿到返回值中的token,放到全局变量globals中。

var json = pm.response.json();
// 设置全局变量,环境变量是pm.environment
pm.globals.set("auth", json.access_token);

好了,现在实现了每次请求登录接口之后全局变量中的token都会更新,接下来就是如何使用全局变量了。

3. 使用全局变量

在postman中,最顶层的文件夹结构称之为collection

我们可以在collection中做很多操作,比如设置授权相关的东西,例如token。

我们可以看到,这里支持多种类型的授权,我这里选择的API Key就是一种简单k-v结构,然后选择将它添加到header里,那么如果说我每个请求要在请求头里加的不止一个token呢?比我就在globals里加了3个变量,那么可以看到Authorization旁边还有一个Pre-request Script,意思就是请求前的脚本,我们写个脚本将剩余的2个变量放入请求头里就行了。

// 添加新 header
var t_id = pm.globals.get('tenant');
pm.request.headers.add({
    key: 'Tenant-Id',
    value: t_id
});
var a = pm.globals.get('authorization');
pm.request.headers.add({
    key: 'Authorization',
    value: a
});

// 添加或修改已存在 header
// pm.request.headers.upsert({
//     key: 'Connection',
//     value: 'close'
// });

// 移除 header
// pm.request.headers.remove('User-Agent')

4. 验证

打开左下角的控制台可以看到每次接口请求的详细信息

我请求了一个接口,详细信息如下:

可以看到请求头里有我们想要加的3个变量,成功。

原文地址:http://www.cnblogs.com/datangguanjunhou/p/16853226.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性