런타임을 시작하지 않고 데이터 API 작성기 구성 파일의 유효성을 검사합니다. 검사 시퀀스(스키마, 구조, 사용 권한, 연결, 메타데이터)를 실행하고 성공(0) 또는 실패(0이 아닌)에 대한 종료 코드를 반환합니다. CI/CD 파이프라인에서 유용합니다.
Syntax
dab validate [options]
한눈에 보기
| Option | 요약 |
|---|---|
-c, --config |
구성 파일의 경로입니다. 기본값은 환경별 또는 dab-config.json. |
비고
validate 은 (가) 아닌 --config플래그를 허용합니다.
종료 코드
| 코드 | Meaning |
|---|---|
| 0 | 구성은 모든 단계를 통과했습니다. |
| 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 as array |
엔터티 이름으로 키가 지정된 개체를 사용합니다. |
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, * - 저장된 프록시:
execute, *
- 테이블/뷰:
빈 작업 목록 없음
단일 작업 집합은 둘 다 아닌 OR 명시적 작업이어야 합니다
*.
오류 및 수정
| 문제 | Example | 수정 |
|---|---|---|
| 지원되지 않는 작업 | "drop" |
사용 read등 |
| CRUD를 사용하여 SP | 저장된 프로시어 사용 update |
execute 사용하거나 *. |
| 빈 목록 | "actions": [] |
작업을 제공합니다. |
4. 데이터베이스 연결
데이터베이스 연결이 작동하는지 확인합니다.
규칙
- 연결 문자열 구문 분석 가능
- 유효한 자격 증명
- 데이터베이스/컨테이너가 있음
오류 및 수정
| 문제 | Example | 수정 |
|---|---|---|
| 일시 중지 | 서버에 연결할 수 없음 | 네트워크/방화벽을 확인합니다. |
| 잘못된 로그인 | 인증 실패 | 사용자 이름/암호를 수정합니다. |
| 누락된 DB | 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; }
워크플로
-
dab validate을 실행합니다. - 첫 번째 실패 단계 수정
- 종료 코드가 0이 될 때까지 다시 실행
- 유효성이 검사된 구성 커밋
팁 (조언)
작은 변경 내용의 유효성을 자주 검사합니다. 버전 제어 차이로 회귀를 빠르게 파악할 수 있습니다.