关于apifox 编写自动更新token脚本
在我的开发历程中, 我频繁地使用到apifox这款工具来进行接口调试工作, 而在这个过程中, 被频繁遇到的问题之一便是关于authorization授权管理, 具体而言就是当我们通过调用用户登录接口获得令牌(token)后, 接下来所有涉及到识别权限(authentication)的接口,都必须在header里面设定相应的Authorization参数,每一次接口的设置无论是否有意为之,或是标识符期限已达到导致其需被重新修改,都是极为繁琐不便的事情。经过深入研究apifox的相关手册,我惊奇地发现它提供了全局环境变量以及后续执行操作等功能,因此我决定采用一个能够实现自动更新的脚本来解决问题。
全局环境变量创建及赋值
一个项目在不同的阶段会处于不同的环境,例如存在开发环境、测试环境、生产环境等,这些环境对应着不同的**“前置 URL”与“接口参数值”**。显而易见的是,当项目随着进度推进而环境发生变动时,频繁地修改接口地址中的前缀 URL 及反复配置参数对于接口调试工作而言十分繁琐。
首先,我们将执行login接口,并编写代码完成对全局变量的赋值。
其次,在后续执行操作部分,我们选择自定义脚本来进行编程。
pm.test("Successful POST request", function () {
const res = pm.response.json()
const token = res.data.token
pm.environment.set("token", token);
});
使用全局变量配置接口的 token
在POST请求返回成功的情况下,接口响应的json数据将会被序列化处理。我们从res.data集合中提取出token信息,并将其赋予环境全局变量中的“token”字段。这样做的目的在于让所有后续接口都能共享同一种认证方式。此处,为了实现这个目的,我们需要在文件的根目录下进行配置。选择根目录,然后选中AUTH节点,然后根据实际需要选择合适的类型。将“Token的值”设置为“{{token}}”,即表示该全局变量里的token值。
至此,当我们再次调用login接口后,全局环境变量中的token便会实时刷新,而后续调用的所有接口都会得到根目录配置的auth参数,从而实现各接口间的共享和统一认证。
总结
-
在 login 中选择后置操作
-
后置操作选择自定义脚本
-
自定义脚本
- 判断接口请求成功
- 将响应信息 json 序列化
- 创建全局变量 token 并赋值为响应信息的 token
-
根目录设置 auth 为全局变量的 token
-
根目录下的接口会默认继承父级的 auth 设置