如何使用JMeter提取并存储API令牌到变量,实现跨会话接口调用
JMeter动态令牌跨请求传递操作步骤
步骤1:从登录接口(API1)提取双令牌
首先确认两个令牌manutouch_token和X-Auth-Token的返回位置,对应选择提取器:
情况1:令牌在登录接口的响应JSON体中
将JSON Extractor挂载为登录接口的直接子节点,可配置单个提取器同时提取两个变量,也可以分开配置两个提取器,参考配置如下:
- 提取
manutouch_token:- 引用名称:
manutouch_token - JSON Path表达式:根据实际返回层级填写,如根节点下直接返回则为
$.manutouch_token,嵌套在data字段中则为$.data.manutouch_token - 匹配编号:
0 - 默认值:
NOT_FOUND(用于调试排查提取失败问题)
- 引用名称:
- 提取
X-Auth-Token:- 引用名称:
x_auth_token - JSON Path表达式:根据实际返回层级填写,如
$.X-Auth-Token - 匹配编号:
0 - 默认值:
NOT_FOUND
- 引用名称:
情况2:令牌在登录接口的响应头中
替换为正则表达式提取器,同样挂载为登录接口的直接子节点:
- 提取
manutouch_token:- 要检查的响应字段:选择「响应头」
- 引用名称:
manutouch_token - 正则表达式:
manutouch_token: (.*?)\n - 模板:
$1$ - 匹配编号:
0 - 默认值:
NOT_FOUND
- 提取
X-Auth-Token:- 要检查的响应字段:选择「响应头」
- 引用名称:
x_auth_token - 正则表达式:
X-Auth-Token: (.*?)\n - 模板:
$1$ - 匹配编号:
0 - 默认值:
NOT_FOUND
步骤2:配置全局头传递令牌
将HTTP Header Manager放在线程组的根节点下,所有子请求会自动继承头配置,两个动态令牌的取值直接调用已提取的变量即可:
- 头名称:
manutouch_token,值:${manutouch_token} - 头名称:
X-Auth-Token,值:${x_auth_token}
步骤3:验证配置有效性
- 在线程组下添加「查看结果树」和「调试取样器」,运行脚本
- 先查看登录接口的响应内容,确认令牌的实际返回位置、字段名和你填写的提取规则匹配
- 查看调试取样器的变量列表,确认
manutouch_token和x_auth_token已成功赋值,不是NOT_FOUND - 最后查看搜索接口(API2)的请求头,确认两个令牌已替换为登录接口返回的有效值,即可正常发起请求
注意事项
- 确保登录接口的执行顺序在所有需要携带令牌的请求之前
- 不要勾选线程组的「每次迭代清空变量」配置,同一个线程内提取的变量默认可跨请求共享
内容的提问来源于stack exchange,提问作者Meghasri
相关产品推荐
相关产品推荐

