可借助Insomnia的JSONPath提取功能自动捕获JSON响应中的嵌套字段:一、在Tests中用JavaScript解析响应并设变量;二、安装JSONPath Extractor插件直接提取;三、用响应预处理器脚本结合jsonpath库高级提取;四、响应非标准时用正则备用提取。
如果您在使用 Insomnia 调试接口时,需要从 JSON 响应体中精准提取某个嵌套字段(如 token、id、pageId 等),但手动查找耗时易错,则可借助内置的 JSONPath 提取功能实现自动化变量捕获。以下是具体操作步骤:
一、启用响应体 JSONPath 提取器
Insomnia 支持在请求响应后自动执行 JSONPath 表达式,并将匹配结果保存为环境变量或全局变量,供后续请求复用。该功能依赖响应内容为合法 JSON 格式,且需在响应预处理器或测试脚本中配置表达式。
1、选中目标请求,在右侧面板切换至
Tests标签页。
2、在编辑区输入 JavaScript 代码,调用insomnia.response.getBody()获取原始响应体。
3、使用
JSON.parse()将响应字符串转为对象,再通过第三方库或原生逻辑配合 JSONPath 表达式提取值。
4、调用
insomnia.variables.set()将提取结果写入指定变量名,例如"auth_token"。
二、使用内置 JSONPath 插件(需安装插件)
Insomnia 官方市场提供JSONPath Extractor插件,安装后可在响应查看器中直接输入表达式并高亮显示匹配项,支持一键导出为变量。
1、点击 Insomnia 左下角Plugins图标,进入插件市场。
2、搜索
JSONPath Extractor并点击Install完成安装。
3、发送请求后,在响应体右上角点击
Extract with JSONPath按钮。
4、在弹出框中输入合法 JSONPath 表达式(如$.data.token或$.items[0].id),确认后选择变量作用域(Environment / Global)并命名。
三、通过响应预处理器脚本提取(推荐用于复杂逻辑)
当需对多个字段联合判断、条件过滤或处理数组遍历结果时,可编写预处理器脚本,利用jsonpath库的 Python 风格语法进行高级提取,避免硬编码路径。
php版微信js-sdk支付接口类php版微信js-sdk支付接口类下载
1、在请求设置中展开
Request Settings→Pre-request Script或Response Handler。
2、粘贴以下模板代码(需确保响应为 JSON):const body = JSON.parse(response.body);const token =jsonpath.query(body, "$.access_token")[0];insomnia.variables.set("api_token", token);
3、若未内置
jsonpath对象,需改用原生递归函数或简化表达式(如body.data?.user?.id)替代。
四、使用正则表达式作为 JSONPath 备用方案
当响应非标准 JSON(含注释、换行不规范)或需模糊匹配字段名时,JSONPath 可能失效,此时正则提取可作为可靠补充,尤其适用于提取带动态前缀的值(如"X-Trace-ID": "abc123")。
1、在响应体界面右键选择
Copy as Regex或手动编写表达式。
2、使用
response.body.match(/"token":"([^"]+)"/)提取双引号内 token 值。
3、通过
[1]获取捕获组结果,并调用insomnia.variables.set()存储。
4、注意对特殊字符(如反斜杠、引号)进行转义,确保正则语法在 JavaScript 环境中有效。
