自定义变量的变量值是固定的,如果需要获取到动态的取值,就需要使用到API接口。API接口可以定义一个取数据的接口,在用户使用时,卡片会向这个接口请求获取数据。
一、创建API接口
点击API接口分类后的“+”号,创建一个API接口数据源。
- API接口名称:此API接口数据源的名称。最大长度为20,只支持英文和数字,且不能以数字开头。
- URL地址:请求数据的地址,支持 http/https 接口。
- 描述:API接口的描述信息。
- 请求方式:GET/POST 请求。
- 请求参数:可以定义发送请求时携带的参数。
- 数据过滤脚本:勾选数据过滤脚本,可以在下面的脚本中定义接口响应数的据处理或过滤规则(JS脚本)。
- 返回结果:点击返回结果后的“刷新”按钮,用来获取新的返回结果。
当刷新返回结果获取最新的数据后,就可以点击“确认”保存数据源的配置。如果点击“取消”,则之前填写的信息不会保存,此 API接口数据源还处在未编辑状态(API接口数据源名称后面有红点提示)。
二、api接口的操作
在api接口列表中,每个 API接口数据源有三个操作按钮:编辑、复制、删除。
此功能与自定义变量一致,请参考文档:自定义变量。
三、添加请求参数
请求参数有两种配置方式:手动配置 或 自定义代码输入。
3.1 手动配置
手动配置的参数可以是直接定义的值,也可以是数据中变量的变量值(包括系统变量和自定义变量)。
点击“+添加参数”按钮,在出现的参数配置栏中填写参数名,设置参数值。
- 如果使用静态参数。则直接在参数值输入框中输入参数值,不用使用后边的“动态参数”。
- 使用变量的值作为参数值。点击“动态参数”,在下拉列表中选择“变量”,然后在弹出的变量列表中选择使用的变量作为参数值。
- 如果选择的是系统变量,会根据选择的测试设备不同,有不同的取值。所以在调试的时候,还需要给系统变量选择一个绑定的测试设备。
- 如果选择的是自定义变量,参数的取值就是自定义变量的值。
- 如果选择的是 slot 变量,则变量的取值从用户所说的语料中抽取。调试的时候,还需要给 slot 变量设置一个调试值,用来在在编辑器预览的时候使用,真机运行的时候会忽略这个调试值。
3.2 自定义代码输入
当接口参数太多不方便手动录入时,可以选择自定义代码录入。还可以点击输入框右上角“全屏”按钮,放大代码输入框。
自定义代码录入中的数据结构为 Mapvalue
,用来定义参数的取值。
支持在 value 里引用变量:自定义变量(缩写为:custom)、slot变量(缩写为:slot)或系统变量(缩写为:sys),引用变量时,value 的值需要使用${}
包裹。
其中 slot 变量跟系统变量需要在 JSONObject 中输入
mockValue
,等同于手动录入时输入模拟值或者选择设备的操作,mockValue 仅在编辑器发挥作用,卡片在设备上的运行将忽略 mockValue。
{
"param1": {
"value": "static" // 表示使用静态参数值
},
"param2": {
"value": "${custom.name}", // 表示自定义变量中名称叫 name 的变量值
"mockValue": "" // 自定义变量可以省略不写
},
"param3": {
"value": "${slot.city}", // 表示 slot 变量
"mockValue": "杭州" // slot 变量必须填写 mockValue
},
"param4": {
"value": "${sys.date}", // 表示系统变量
"mockValue": "5月18日" // 系统变量必须填写 mockValue
}
}
以下是系统变量的 mockValue 参考值 (slot 变量无约束):
{
"system1": {
"value": "${sys.date}",
"mockValue": "5月18日"
},
"system2": {
"value": "${sys.datestamp}"
"mockValue": 1621331881902
},
"system3": {
"value": "${sys.week}",
"mockValue": "星期二"
},
"system4": {
"value": "${sys.userOpenId}",
"mockValue": "bsxb9eCtvjnIoS76SFK2AVhZ0yN4DpXUJSIkQtcU="
},
"system5": {
"value": "${sys.deviceOpenId}",
"mockValue": "BMgbqFr30kf5+j1sfgasg7sfSFG3y8micMj8zX9F7NSmyQMuLWM76A=="
},
"system6": {
"value": "${sys.userId}",
"mockValue": 50227734
},
"system7": {
"value": "${sys.uuid}",
"mockValue": "4D14C5C16CSN6374HCB0335EDFE35"
}
}
使用
${}
的方式表示引用的是变量列表里的数据,请注意匹配变量名称。如果匹配不到变量名称则会将代码块解析为普通文本。
如果使用的变量类型缩写不匹配也会将代码块解析为普通文本。
四、数据过滤脚本
首先勾选“数据过滤脚本”。如果api接口返回的是一个JSON格式的对象,则可以通过脚本过滤出这个对象的某个属性值,或者执行一段JS脚本。
例如api接口返回的JSON对象的数据是:
{
"name": "张三",
"age": 18,
"hobby": [
"吃饭",
"睡觉",
"打豆豆"
]
}
则可以将脚本中的return data
修改成return data.name
过滤出返回对象的 name 属性值张三
;
可以通过 return data.hobby[0]
过滤出 hobby 属性数组值中的第一个元素吃饭
;
可以通过return data.hobby.length
获取 hobby 属性数组元素的个数3
;
可以通过 return data.name.split("三")
分割 name 属性的字符串,获得结果["张", ""]
。
修改脚本后,可以点击“运行”按钮,运行过滤脚本,给出 过滤器输入数据 和 过滤器运行结果 的对比。
如果过滤脚本的代码比较多,还可以点击“放大”按钮,打开编辑脚本的放大窗口。
五、刷新返回结果
当设置好数据过滤脚本后,需要刷新返回结果,获取到这个api接口数据源最终的输出结果,才可以点击“确认”保存数据源。
如果刷新返回结果后更改了过滤规则,还需要重新刷新返回结果。