Apifox 发请求时如何自动获取Cookie 和 token

您所在的位置:网站首页 cookie设置在哪里 Apifox 发请求时如何自动获取Cookie 和 token

Apifox 发请求时如何自动获取Cookie 和 token

2023-11-10 22:05| 来源: 网络整理| 查看: 265

用户登录到网站或 App 是非常常见的的场景,登录成功后一般会返回登录凭证(一般为 Cookie 或者 token),后续其它接口发起请求时会携带 Cookie 或者 token 到服务器进行校验。校验通过,则返回相关的数据,否则报错或者要求用户去登录。

那么,在 Apifox 中,我们如何设置登录态(Authorization),并且在调用接口的时候自动获取 Cookie 或者 token 呢?

前期准备

首先你需要准备两条接口:

一条接口用于获取登录凭证(即 Cookie 或者 token 的值);另一条接口通过 Cookie 或 token 的值发送到服务器进行校验。

你也可以通过 Apifox 提供的两条接口来进行相关测试,接口如下:

一是邮箱登录接口 https://api.apifox.cn/api/v1/login?locale=zh-CN,该接口用来获取登录后的 token。二是项目列表接口 https://api.apifox.cn/api/v1/user-projects?locale=zh-CN,该接口用来测试登录后返回的 token 是否有效。如果你要用上面的两条接口,那么你需要确保你的 Apifox 账户设置了密码并绑定了邮箱。Apifox 发请求时自动获取Cookie 和 token手动登录获取

本章节我们来讨论手动登录的方式:先进行手动登录,然后再通过登录后获取到的 Cookie 和 token 的信息调用其它接口。

登录获取 Cookie 和 token

在任一目录下新建一个POST请求,可在页面底部选择调试模式,然后填写请求路径,设置请求体 Body,选择请求体的格式,并填写登录需要的用户名及密码,具体如下所示:

Apifox 发请求时自动获取Cookie 和 token注:如果你用的是 Apifox 提供的接口,上面请求体中的字段说明如下:"account":你的 Apifox 登录邮箱"password": 你的 Apifox 登录密码"loginType": "EmailPassword"。默认字段,照写即可。

完成上面的步骤后,可设置后置操作,将返回的 Cookie 或 token 存到 环境变量 中。如下图所示,设置变量名称以及 JSONPath 表达式。

Apifox 发请求时自动获取Cookie 和 token注:$.data.accessToken 中的 accessToken 字段就是服务器返回的 token,如果你用的是自己的接口,字段名可能会不一样。

相关的操作设置完成,即可发起请求,请求结果如下图所示。其中字段accessToken的值保存到了环境变量中(你可在环境变量中查看),Cookie 值相应的也自动保存。

Apifox 发请求时自动获取Cookie 和 token使用 Cookie 与 token 发起请求

当 2.1 小节的 token 获取成功,用其它接口发起请求的时候,即可携带 token 信息一起发给后台,其中相关的 Cookie 信息会自动带上。

你可以在 Header 里设置 Authorization,并获取 环境变量 中的 token 值来发起请求:

Apifox 发请求时自动获取Cookie 和 token

或者直接把 token 值写进去:

Apifox 发请求时自动获取Cookie 和 token

也可以在 Auth 里设置授权信息:

注:通过 Bearer Token 的授权方式,如果你的环境变量中的值有前缀 Bearer,需要先将其删除。Apifox 发请求时自动获取Cookie 和 token前置脚本自动获取

手动登录的方式有时过于繁琐,为了更方便的调用接口,我们通过 前置脚本 来实现自动登录,具体的实现步骤如下:

1、在环境变量中新增一个变量(如:ACCESS_TOKEN),该变量用来保存登录需要的凭证(即token值)。如果凭证有过期时间,也可新增一个变量(如:ACCESS_TOKEN_EXPIRES)用来保存登录凭证的过期时间。

Apifox 发请求时自动获取Cookie 和 token

2、在项目的根目录或任一目录的前置操作中,新增一个自定义脚本(脚本为 JavaScript 代码),自定义内容如下:

注:如果你的 token 没有过期时间,可以将 ACCESS_TOKEN_EXPIRES 相关的代码去除。// 获取环境变量里的 ACCESS_TOKEN const accessToken = pm.environment.get("ACCESS_TOKEN"); // 获取环境变量里的 ACCESS_TOKEN_EXPIRES // const accessTokenExpires = pm.environment.get("ACCESS_TOKEN_EXPIRES"); // 如 ACCESS_TOKEN 没有值,或 ACCESS_TOKEN_EXPIRES 已过期,则执行发送登录接口请求 if ( // !accessToken || // (accessTokenExpires && new Date(accessTokenExpires)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3