关于apifox 编写自动更新token脚本

616 阅读3分钟

关于apifox 编写自动更新token脚本

在我的开发历程中, 我频繁地使用到apifox这款工具来进行接口调试工作, 而在这个过程中, 被频繁遇到的问题之一便是关于authorization授权管理, 具体而言就是当我们通过调用用户登录接口获得令牌(token)后, 接下来所有涉及到识别权限(authentication)的接口,都必须在header里面设定相应的Authorization参数,每一次接口的设置无论是否有意为之,或是标识符期限已达到导致其需被重新修改,都是极为繁琐不便的事情。经过深入研究apifox的相关手册,我惊奇地发现它提供了全局环境变量以及后续执行操作等功能,因此我决定采用一个能够实现自动更新的脚本来解决问题。

全局环境变量创建及赋值

一个项目在不同的阶段会处于不同的环境,例如存在开发环境、测试环境、生产环境等,这些环境对应着不同的**“前置 URL”“接口参数值”**。显而易见的是,当项目随着进度推进而环境发生变动时,频繁地修改接口地址中的前缀 URL 及反复配置参数对于接口调试工作而言十分繁琐。

img

首先,我们将执行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值。

img

至此,当我们再次调用login接口后,全局环境变量中的token便会实时刷新,而后续调用的所有接口都会得到根目录配置的auth参数,从而实现各接口间的共享和统一认证。

总结

  1. 在 login 中选择后置操作

  2. 后置操作选择自定义脚本

  3. 自定义脚本

    1. 判断接口请求成功
    2. 将响应信息 json 序列化
    3. 创建全局变量 token 并赋值为响应信息的 token
  4. 根目录设置 auth 为全局变量的 token

  5. 根目录下的接口会默认继承父级的 auth 设置