validate 命令

在不启动运行时的情况下验证数据 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-sourceruntimeentities 节存在并且格式正确
  • 不允许的意外属性(每个架构)
  • 枚举值(如 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

  1. 运行 dab validate
  2. 修复第一个失败阶段
  3. 在退出代码为 0 之前重新运行
  4. 提交已验证的配置

小窍门

经常验证小更改。 使用版本控制差异快速查明回归。