空值规则
同样是“没有值”,来源可能有三种,平台的处理并不完全一样。对接第三方接口时,“不发送这个字段”和“发送一个 null”往往是两种结果,本手册列出各处的实际表现。
三种“没有值”
| 情况 | 在编辑器里的样子 |
|---|---|
| 未绑定 | 取值栏是空的,没有配置任何内容 |
| 绑定了空值 | 明确选择了空值,或填入的固定值为空 |
| 运行时为空 | 绑定了变量、字段或上游节点的出参,但运行时它没有值 |
未绑定和绑定了空值在绝大多数位置是同一件事,平台不做区分。真正需要单独考虑的是运行时为空:这种绑定在编辑器里看起来是完整的,只有运行时才知道有没有值。
组件属性与样式
取空值,组件按没有值来渲染。不会报错,也不会保留上一次的值。
条件数据同理:所有分支的条件都不成立时,整个配置项取空值。详见配置条件数据。
数据源的筛选条件
筛选条件的分支列表以 Default(默认)分支结尾,它的条件恒成立,因此总会有一条筛选生效,不存在“没有分支命中”的情况。
请保持 Default 分支在最后:把它排到前面会短路它后面的所有分支;如果它被删掉(例如被工具或迁移改坏),系统会退回到列表里的最后一条分支——查询不会失败,但生效的筛选可能不是你预期的那一条。
筛选值本身为空时不会自动过滤数据,详见获取数据源与数据绑定。
行为流入参
| 入参 | 未绑定或绑定了空值 | 运行时为空 |
|---|---|---|
| 必填 | 调用直接失败 | 调用直接失败 |
| 选填 | 不传这个入参,行为流内读到空值 | 传入空值 |
必填入参没有值时是显式失败,可以在运行日志里看到。如果希望“没传就用默认值”,请把入参设为选填,并在行为流内部判空后再赋默认值。
API 请求
以下规则对页面调用、行为流的 API 节点和 AI 智能体工具都适用。表中的旧版 API 指编辑器重做前配置、尚未迁移的第三方 API,它没有集合、输入、响应这套配置结构;新版 API 的配置方式见集成第三方 API。
查询参数、请求头和路径参数
| 位置 | 旧版 API | 新版 API |
|---|---|---|
| 查询参数 | 不发送这个参数 | 不发送这个参数 |
| 请求头 | 不发送这个请求头 | 不发送这个请求头 |
| 路径参数 | 地址拼不出来,调用报错 | 调用报错,错误信息会指出是哪个路径参数没有取值 |
路径参数为空属于配置错误。请在调用方保证它一定有值,或者给它配一个默认值。
请求体字段
| 情况 | 旧版 API | 新版 API |
|---|---|---|
| 选填字段留空 | 不发送这个字段 | 不发送这个字段 |
| 必填字段留空 | 调用报错,请求不会发出 | 发送 null |
| 绑定的取值运行时为空 | 不发送这个字段 | 发送 null |
| 字段在接口定义里配了默认值 | 发送该字段自己的默认值 | 发送该字段自己的默认值 |
| 空文本 | 发送 "" | 发送 "" |
| 空数组 | 发送 [] | 发送 [] |
| 表单字段为空 | 不发送这个字段 | 不发送这个字段 |
这是新旧两版最容易踩的差异:同一个字段留空,旧版 API 是不发送,新版 API 只要该字段有取值配置(包括必填字段和绑定了空值的字段)就会发送 null。微信、支付宝和多数国内网关都区分“字段缺失”和“字段为 null”,把旧版 API 迁到新版后请重新对一遍接口文档。
确认实际发出的请求
新版 API 打开测试面板,在输入页把要验证的输入留空,再点预览请求。面板显示的方法、地址、请求头和请求体就是实际会发出的内容,某个字段是“不发送”还是“发送 null”在这里能直接看出来。
运行日志里的第三方 API 记录显示的是实际发出的请求体,因为为空而被丢弃的字段不会出现在里面,可以直接拿它和第三方接口的报错对照。
对接建议
- 需要显式发送
null时用新版 API。旧版 API 没有办法发出null,只能选择发送或不发送。 - 不希望发送某个字段时,把它设为选填,并保证调用方不传值。
- 接口要求“传空字符串”和“不传这个字段”是两回事。前者请用空文本明确表达,不要留空。
- 第三方接口把必填字段收到
null当作参数错误时,不要依赖平台留空,请在调用方补齐取值或改用默认值。