Apifox 中使用 JSONPath 提取接口响应的基本用法
在项目的开发和测试过程中,经常需要从接口的响应数据里提取特定的值,以便进一步处理和使用(通常用于发起其它请求)。幸运的是, Apifox 作为一款功能强大的 API 管理平台,提供了使用 JSONPath 语法来轻松提取 API 响应数据中的值。本文将介绍如何在 Apifox 中利用 JSONPath 进行数据提取,帮助你更高效地处理 API 响应数据。
什么是 JSONPath?
JSONPath 是一种用于在 JSON 结构中定位和提取数据的表达式语言。类似于 XPath 用于 XML,JSONPath 允许你通过指定路径表达式来定位和获取 JSON 数据中的特定字段。
基本提取思路
- 在项目接口的
后置操作
中选择提取变量
2. 然后填写相关的变量名称、变量类型、JSONPath 表达式等
3. 点击发送
按钮,Apifox 将根据你提供的 JSONPath 表达式从响应数据中提取相应的字段值
案例参考
假设你发送了 API 请求,并得到了以下响应数据:
{
"code": 0,
"data": {
"id": 1000,
"title": "首席品牌官",
"list": [
{
"id": 100000,
"name": "张三",
"age": 18,
"phone": 8473820,
"hobby": ["唱","跳","rap","篮球"]
},
{
"id": 100001,
"name": "李四",
"age": 34,
"phone": 8373855,
"hobby": ["羽毛球","乒乓球","足球","篮球"]
},
{
"id": 100002,
"name": "王五",
"age": 35,
"phone": 8873868,
"hobby": ["书法","国画","二次元"]
}
],
"content_counter": {
"view": 28182,
"like": 316,
"collect": 904
}
}
}
若你想提取“list”里面“id”字段的所有值,你可以使用 JSONPath 表达式$.data.list[*].id
,Apifox 将会从响应数据中提取出“id”字段的值,即:[100000,100001,100002]
。
注:你可在 http://jsonpath.com/ 这个地址测试
其它常见响应值的提取:
JsonPath | 说明 |
$.data.id | 提取字段 "id" 的值 |
$.data.list | 提取数组 "list" 的值 |
$.data.list[*].id | 提取数组 "list" 中所有对象的 "id" 值 |
$.data.list[1].id | 提取数组 "list" 中第二个对象的 "id" 值 |
$.data.list[-1:].id | 提取数组 "list" 中倒数第一个对象的 "id" 值 |
$.data.list[?(@.age > 20)] | 提取数组 "list" 中 "age" 大于 20 的对象值 |
$.data.list[?(@.age > 20)].id | 提取数组 "list" 中 "age" 大于 20 的对象值的 "id" 值 |
$.data.list[?(@.name == '李四')] | 提取数组 "list" 中 "name" 为 "李四" 的对象值 |
$.data.list[?(@.name == '李四')].id | 提取数组 "list" 中 "name" 为 "李四" 的对象值的 "id" 值 |
$.data.list[*].hobby | 提取数组 "list" 中所有对象的 "hobby" 值 |
$.data.list[?(@.hobby.indexOf('书法') !== -1)] | 提取数组 "list" 中 "hobby" 含有 "书法" 的对象值 |
$.data.content_counter | 提取字段 "content_counter" 的值 |
$.data.content_counter.view | 提取字段 "view" 的值 |
总结
Apifox 的 JSONPath 功能提供了一种简单而强大的方法来从 API 响应数据中提取所需的字段值。通过了解JSONPath 语法并在 Apifox 的 后置操作 中应用合适的表达式,我们可以轻松而高效地处理 API 响应数据。无论是提取单个字段还是复杂的嵌套结构,Apifox 的 JSONPath 提取功能都能满足你的需求,提升你在 API 开发和测试中的工作效率。尝试一下 Apifox 的 JSONPath 提取功能,让你的数据提取过程更加便捷和准确吧!