Freigeben über


validate-Befehl

Überprüfen Sie eine Konfigurationsdatei des Daten-API-Generators, ohne die Laufzeit zu starten. Führt eine Abfolge von Prüfungen (Schema, Struktur, Berechtigungen, Konnektivität, Metadaten) aus und gibt einen Exitcode für Erfolg (0) oder Fehler (nonzero) zurück. Nützlich in CI/CD-Pipelines.

Syntax

dab validate [options]

Schnellblick

Option Zusammenfassung
-c, --config Pfad zur Konfigurationsdatei. Standardeinstellung für umgebungsspezifische oder dab-config.json.

Hinweis

validate akzeptiert keine Kennzeichnungen außer --config.

Ausgangscodes

Code Bedeutung
0 Die Konfiguration hat alle Phasen übergeben.
Nonzero Mindestens eine Phase ist fehlgeschlagen. Details finden Sie in den Protokollen.

CI-Beispiel:

dab validate && echo "OK" || { echo "INVALID CONFIG"; exit 1; }

-c, --config

Pfad zur Konfigurationsdatei. Wenn sie weggelassen wird, sucht dab-config.<DAB_ENVIRONMENT>.json der Validator zuerst, und dann dab-config.json.

Example

dab validate \
  --config ./dab-config.prod.json

Überprüfungsphasen

Die Überprüfung erfolgt in der Reihenfolge. Wenn eine Phase fehlschlägt, werden spätere Phasen übersprungen.

1. Schema

Überprüft, ob die JSON-Konfiguration dem Schema entspricht.

Regeln

  • $schema ist erreichbar oder strukturell gültig
  • data-source, runtimeund entities Abschnitte existieren und sind wohlgeformt
  • Unerwartete Eigenschaften nicht zugelassen (pro Schema)
  • Enumerationswerte (wie database-type) sind gültig.

Fehler und Korrekturen

Das Problem Example Reparatur
Falsch geschriebene Eigenschaft "conn-string" Verwenden Sie "connection-string".
Ungültige Enumeration "database-type": "mydb" Verwenden Sie unterstützte Werte.
Falsche Form entities als Array Verwenden Sie objektschlüsselt nach Entitätsnamen.

2. Konfigurationseigenschaften

Überprüft die Konsistenz über das Schema hinaus.

Regeln

  • Gültig database-type angegeben
  • Für cosmosdb_nosqldatenbank- und GraphQL-Schemapfad sind erforderlich. Je nach Entitäten kann auch ein Container erforderlich sein. REST-Einstellungen werden ignoriert.
  • Mindestens ein Endpunkt (REST, GraphQL, MCP) muss aktiviert sein.
  • REST/GraphQL-Pfade beginnen mit / und kollidieren nicht
  • Legacykennzeichnungen *.disabled geben Warnungen aus, schlagen jedoch nicht fehl.
  • Wenn Sie JSON-Webtoken (JWT) verwenden, müssen sowohl Aussteller als auch Zielgruppe festgelegt werden.

Fehler und Korrekturen

Das Problem Example Reparatur
Alle Endpunkte deaktiviert REST=false, GraphQL=false, MCP=false Aktivieren Sie eins erneut.
Cosmos DB fehlendes Schema Nein graphql-schema Geben Sie den Schemapfad an.
Authentifizierungskonflikt Ausstellersatz, Fehlende Zielgruppe Geben Sie beides oder keines an.

3. Berechtigungen

Überprüft, ob die Berechtigungen jeder Entität gültig sind.

Regeln

  • Jeder Eintrag hat eine nicht inserte Rolle.

  • Aktionen müssen gültig sein:

    • Tabellen/Ansichten: create, read, update, delete, *
    • Gespeicherte Procs: execute, *
  • Keine leeren Aktionslisten

  • Ein einzelner Aktionssatz muss entweder * ODER explizite Aktionen sein, nicht beide

Fehler und Korrekturen

Das Problem Example Reparatur
Nicht unterstützte Aktion "drop" Verwenden Sie readusw.
Gespeicherte Prozedur mit CRUD Gespeicherte Proc-Anwendungen update Verwenden Sie execute oder *.
Leere Liste "actions": [] Stellen Sie Aktionen bereit.

4. Datenbankverbindung

Überprüft, ob die Datenbankverbindung funktioniert.

Regeln

  • Verbindungszeichenfolge kann analysiert werden
  • Gültige Anmeldeinformationen
  • Datenbank/Container ist vorhanden

Fehler und Korrekturen

Das Problem Example Reparatur
Zeitlimit Server nicht erreichbar Überprüfen Sie das Netzwerk/die Firewall.
Ungültige Anmeldung Fehler bei der Authentifizierung Korrigieren Sie den Benutzernamen/das Kennwort.
Fehlende Datenbank Datenbank nicht gefunden Datenbank- oder Aktualisierungskonfiguration erstellen.

5. Entitätsmetadaten

Überprüft Entitätsdefinitionen anhand der Datenbank.

Regeln

  • Quellobjekt ist vorhanden
  • Tabellen/Ansichten: Gültige Schlüsselfelder, eingeschlossene/ausgeschlossene Felder sind vorhanden.
  • Ansichten benötigen immer source.key-fields
  • Gespeicherte Prozeduren: Params stimmen mit signatur überein
  • Beziehungen: Zielentität vorhanden, Verknüpfen von Feldern, die an Schlüsseln ausgerichtet sind; linking.object muss für n:n vorhanden sein
  • Richtlinien verweisen auf gültige Felder
  • Zwischenspeichern von Time-to-Live (TTL) nicht negativ

Fehler und Korrekturen

Das Problem Example Reparatur
Fehlende Schlüsselfelder Ansicht ohne key-fields Fügen Sie source.key-fieldshinzu.
Ungültige Spalte fields.include Liste fehlender Spalte Entfernen oder Korrigieren des Namens.
Beziehungskonflikt Die Anzahl der Verknüpfungsfelder stimmt nicht mit der Primärschlüsselanzahl überein. Fehler beim Verknüpfen von Feldern.

Ausgabebeispiele

Erfolg:

Data API builder <version>
Config is valid.

Versagen:

Data API builder <version>
Error: View 'sales_summary' missing required key-fields.
Config is invalid.

Hinweis

Validierungsfehler sind phasenspezifisch. Beheben Sie die erste fehlerhafte Phase vor dem erneuten Ausführen.

Environment-Specific Dateien

Wenn DAB_ENVIRONMENT diese Einstellung festgelegt ist, validate wird geladen dab-config.<DAB_ENVIRONMENT>.json.

Example

export DAB_ENVIRONMENT=Staging
dab validate

Hinweis

Der Validator überprüft nur eine einzelne aufgelöste Datei. Es werden keine Umgebungsvarianten zusammengeführt.

Anwendungsbeispiel

Grundlegend:

dab validate

Explizite Datei:

dab validate \
  --config ./configs/dab-config.test.json

Multi-Environment:

for env in Development Staging Production; do
  echo "Validating $env..."
  DAB_ENVIRONMENT=$env dab validate || exit 1
done

CI fast fail:

dab validate && echo "OK" || { echo "INVALID CONFIG"; exit 1; }

Arbeitsablauf

  1. Führen Sie dab validate aus.
  2. Beheben der ersten fehlerhaften Phase
  3. Erneutes Ausführen bis zum Beenden des Codes 0
  4. Commit für überprüfte Konfiguration

Tipp

Überprüfen Sie häufig kleine Änderungen. Verwenden Sie Versionssteuerungs-Diffs, um Regressionen schnell anzuheften.