在不启动运行时的情况下验证数据 API 生成器配置文件。 运行一系列检查(架构、结构、权限、连接、元数据),并返回成功(0)或失败(非零)的退出代码。 在 CI/CD 管道中非常有用。
Syntax
dab validate [options]
快速浏览
| 选项 | 概要 |
|---|---|
-c, --config |
配置文件的路径。 默认为特定于环境的或 dab-config.json。 |
注释
validate 接受除其他任何标志以外的 --config任何标志。
退出代码
| Code | Meaning |
|---|---|
| 0 | 配置通过所有阶段。 |
| 非零 | 一个或多个阶段失败。 有关详细信息,请参阅日志。 |
CI 示例:
dab validate && echo "OK" || { echo "INVALID CONFIG"; exit 1; }
-c, --config
配置文件的路径。 如果省略,则验证程序首先dab-config.json查找dab-config.<DAB_ENVIRONMENT>.json。
Example
dab validate --config ./dab-config.prod.json
验证阶段
验证按顺序进行。 如果一个阶段失败,则会跳过后面的阶段。
1. 架构
检查配置 JSON 是否与架构匹配。
规则
-
$schema可访问或结构有效 -
data-source、runtime和entities节存在并且格式正确 - 不允许的意外属性(每个架构)
- 枚举值(如
database-type) 有效
失败和修复
| 问题 | Example | 修复 |
|---|---|---|
| 拼写错误的属性 | "conn-string" |
使用 "connection-string"。 |
| 无效枚举 | "database-type": "mydb" |
使用支持的值。 |
| 形状错误 |
entities 作为数组 |
使用按实体名称键键的对象。 |
2. 配置属性
检查架构之外的一致性。
规则
- 提供的有效
database-type - 对于
cosmosdb_nosql,需要数据库和 GraphQL 架构路径。 可能还需要容器,具体取决于实体。 将忽略 REST 设置。 - 必须至少启用一个终结点(REST、GraphQL、MCP)
- REST/GraphQL 路径以不碰撞开头
/ - 旧
*.disabled标志发出警告,但不会失败 - 如果使用 JWT,则必须设置颁发者和受众
失败和修复
| 问题 | Example | 修复 |
|---|---|---|
| 所有终结点关闭 | REST=false,GraphQL=false,MCP=false | 重新启用一个。 |
| Cosmos DB 缺少架构 | 不 graphql-schema |
提供架构路径。 |
| 身份验证不匹配 | 颁发者集,访问群体缺失 | 提供两者或两者均未提供。 |
3. 权限
检查每个实体的权限是否有效。
规则
每个条目都有一个非空角色
作必须有效:
- 表/视图:
create, read, update, delete, * - 存储的 procs:
execute, *
- 表/视图:
无空作列表
单个作集必须是
*OR 显式作,而不是两者
失败和修复
| 问题 | Example | 修复 |
|---|---|---|
| 不支持的作 | "drop" |
使用 read等 |
| 使用 CRUD 的 SP | 存储的 proc 用法 update |
使用 execute 或 *。 |
| 空列表 | "actions": [] |
提供作。 |
4. 数据库连接
检查数据库连接是否正常工作。
规则
- 连接字符串可分析
- 凭据有效
- 数据库/容器存在
失败和修复
| 问题 | Example | 修复 |
|---|---|---|
| 超时 | 服务器无法访问 | 检查网络/防火墙。 |
| 登录错误 | 身份验证失败 | 修复用户名/密码。 |
| 缺少 DB | 找不到 DB | 创建数据库或更新配置。 |
5. 实体元数据
检查针对数据库的实体定义。
规则
- 源对象存在
- 表/视图:键字段有效,包含/排除的字段存在
- 视图始终需要
source.key-fields - 存储过程:参数匹配签名
- 关系:目标实体存在,链接字段与键对齐;对于多对多,linking.object 必须存在
- 策略引用有效字段
- 缓存 TTL 非负
失败和修复
| 问题 | Example | 修复 |
|---|---|---|
| 缺少键字段 | 不带视图 key-fields |
添加 source.key-fields。 |
| 错误列 |
fields.include 列出缺少的列 |
删除或修复名称。 |
| 关系不匹配 | 链接字段计数 != PK 计数 | 修复链接字段。 |
输出示例
成功:
Data API builder <version>
Config is valid.
失败:
Data API builder <version>
Error: View 'sales_summary' missing required key-fields.
Config is invalid.
注释
验证错误特定于阶段。 在重新运行之前修复第一个失败阶段。
Environment-Specific 文件
如果 DAB_ENVIRONMENT 已设置,则 validate 加载 dab-config.<DAB_ENVIRONMENT>.json。
Example
DAB_ENVIRONMENT=Staging dab validate
注释
验证程序仅检查单个已解析的文件。 它不会合并环境变体。
示例用法
基本:
dab validate
显式文件:
dab validate --config ./configs/dab-config.test.json
多环境:
for env in Development Staging Production; do
echo "Validating $env..."
DAB_ENVIRONMENT=$env dab validate || exit 1
done
CI 快速失败:
dab validate && echo "OK" || { echo "INVALID CONFIG"; exit 1; }
Workflow
- 运行
dab validate - 修复第一个失败阶段
- 在退出代码为 0 之前重新运行
- 提交已验证的配置
小窍门
经常验证小更改。 使用版本控制差异快速查明回归。