Insomnia链式请求通过响应脚本提取变量(如token)、前置脚本动态构造参数、集合顺序执行与条件控制、环境变量模板及嵌套引用实现多层依赖。

一、理解链式请求与依赖机制
Insomnia 中的链式请求指一个请求的执行依赖于前序请求的响应结果,常用于需要动态提取 Token、ID 或临时凭证的测试流程。该机制不依赖外部脚本,而是通过内置变量引用与脚本逻辑实现请求间数据流转。其核心在于将上一个请求的响应体、状态码或头信息提取为环境变量或全局变量,并在后续请求的 URL、Header 或 Body 中复用。
二、使用响应脚本提取并设置变量
响应脚本在每次请求返回后自动执行,可用于解析响应内容并写入变量,是构建依赖链的基础手段。该方式无需修改原始请求结构,所有逻辑集中于脚本层,便于维护和调试。
1、选中目标请求(如登录接口),点击右侧“Scripts”标签页。
2、在“Response Script”区域输入 JavaScript 代码,例如提取 JWT Token:
const response = JSON.parse(responseBody);
insomnia.environment.set("auth_token", response.token);
3、保存后,该请求执行完毕即自动将 token 写入当前环境变量。
4、在下一个请求的 Header 中添加 Authorization 字段,值设为 Bearer {{auth_token}}。
三、利用前置脚本动态构造请求参数
前置脚本在请求发出前运行,可读取已存在的变量、生成时间戳、拼接路径参数或修改请求体,适用于需根据前序响应实时调整当前请求结构的场景。
1、选中待配置的后续请求(如获取用户信息),切换至“Scripts”标签页。
2、在“Request Script”区域编写脚本,例如读取上一步返回的 user_id 并注入 URL:
const userId = insomnia.environment.get("user_id");
request.url = request.url.replace("{{user_id}}", userId);
3、确保前序请求已在响应脚本中执行了 insomnia.environment.set("user_id", ...); 操作。
4、当前请求的 URL 中需预先包含占位符 {{user_id}},例如 https://api.example.com/users/{{user_id}}。
四、通过请求集合顺序与条件触发控制执行流
Insomnia 支持按集合内请求顺序依次运行,并可在脚本中使用条件判断跳过或终止后续请求,从而模拟真实业务中的分支逻辑(如登录失败则不执行后续操作)。
1、在集合根节点右键,选择“Run Collection”。
2、确保集合内请求按依赖顺序排列:登录 → 获取 profile → 更新设置。
3、在第二个请求的“Response Script”中加入状态校验:
if (responseCode !== 200) {
throw new Error("Profile fetch failed, aborting chain");
}
4、启用集合运行时的“Stop on error”选项,使异常发生时自动中断后续请求。
五、结合环境变量模板与嵌套引用实现多层依赖
当链路超过两层(如 A→B→C→D),直接逐级赋值易出错。此时应统一使用环境变量作为中间载体,并支持变量嵌套引用,提升可读性与复用性。
1、在环境配置中预设基础变量,例如 base_url: https://api.example.com。
2、在第一个请求响应脚本中设置复合变量:
insomnia.environment.set("api_version", "v1");
insomnia.environment.set("base_path", "{{base_url}}/{{api_version}}");
3、第二个请求的 URL 直接填写 {{base_path}}/auth/login,避免硬编码。
4、第三个请求可继续扩展,如设置 {{base_path}}/users/{{user_id}},其中 user_id 来自第二步响应脚本。
注意:所有变量引用必须使用双大括号语法 {{variable_name}},且变量名区分大小写

















