Delen via


validate opdracht

Valideer een Data API Builder-configuratiebestand zonder de runtime te starten. Voert een reeks controles (schema, structuur, machtigingen, connectiviteit, metagegevens) uit en retourneert een afsluitcode voor geslaagd (0) of mislukt (niet-nul). Handig in CI/CD-pijplijnen.

Syntaxis

dab validate [options]

Snelle blik

Optie Samenvatting
-c, --config Pad naar het configuratiebestand. Standaard ingesteld op omgevingsspecifieke of dab-config.json.

Opmerking

validate accepteert geen andere vlaggen dan --config.

Afsluitcodes

Code Meaning
0 De configuratie heeft alle fasen doorstaan.
niet-nul Een of meer fasen zijn mislukt. Zie logboeken voor meer informatie.

CI-voorbeeld:

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

-c, --config

Pad naar het configuratiebestand. Als u dit weglaat, zoekt validator eerst naardab-config.<DAB_ENVIRONMENT>.json.dab-config.json

Example

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

Validatiefasen

Validatie vindt plaats in volgorde. Als één fase mislukt, worden latere fasen overgeslagen.

1. Schema

Controleert of de configuratie-JSON overeenkomt met het schema.

Reglement

  • $schema is bereikbaar of structureel geldig
  • data-source, runtimeen secties bestaan en entities zijn goed gevormd
  • Onverwachte eigenschappen niet toegestaan (per schema)
  • Opsommingswaarden (zoals database-type) zijn geldig

Fouten en oplossingen

Probleem Example Repareren
Verkeerd gespelde eigenschap "conn-string" Gebruik "connection-string".
Ongeldige opsomming "database-type": "mydb" Gebruik ondersteunde waarden.
Verkeerde vorm entities als matrix Gebruik objectsleutels op entiteitsnamen.

2. Configuratie-eigenschappen

Controleert de consistentie buiten het schema.

Reglement

  • Geldig database-type opgegeven
  • Voor het schemapad database cosmosdb_nosqlen GraphQL zijn vereist. Er kan ook een container vereist zijn, afhankelijk van entiteiten. REST-instellingen worden genegeerd.
  • Ten minste één eindpunt (REST, GraphQL, MCP) moet zijn ingeschakeld
  • REST/GraphQL-paden beginnen met / en botsen niet
  • Verouderde *.disabled vlaggen verzenden waarschuwingen, maar mislukken niet
  • Als u JWT gebruikt, moeten zowel verlener als doelgroep worden ingesteld

Fouten en oplossingen

Probleem Example Repareren
Alle eindpunten uit REST=false, GraphQL=false, MCP=false Schakel er een opnieuw in.
Ontbrekend schema in Cosmos DB Nee graphql-schema Geef het schemapad op.
Verificatie komt niet overeen Verlenerset, doelgroep ontbreekt Geef beide of geen van beide op.

3. Machtigingen

Controleert of de machtigingen van elke entiteit geldig zijn.

Reglement

  • Elke vermelding heeft een niet-lege rol

  • Acties moeten geldig zijn:

    • Tabellen/weergaven: create, read, update, delete, *
    • Opgeslagen procs: execute, *
  • Geen lege actielijsten

  • Eén actieset moet EEN OF expliciete acties zijn * , niet beide

Fouten en oplossingen

Probleem Example Repareren
Niet-ondersteunde actie "drop" Gebruik read, enzovoort.
SP met CRUD Opgeslagen proc gebruikt update Gebruik execute of *.
Lege lijst "actions": [] Acties opgeven.

4. Databaseverbinding

Controleert of de databaseverbinding werkt.

Reglement

  • Verbindingsreeks die kan worden geparseerd
  • Geldige referenties
  • Database/container bestaat

Fouten en oplossingen

Probleem Example Repareren
Onderbreking Server onbereikbaar Controleer het netwerk/de firewall.
Ongeldige aanmelding Verificatie is mislukt Gebruikersnaam/wachtwoord herstellen.
Ontbrekende database DB is niet gevonden Db maken of configuratie bijwerken.

5. Entiteitsmetagegevens

Controleert entiteitsdefinities op basis van de database.

Reglement

  • Bronobject bestaat
  • Tabellen/weergaven: sleutelvelden geldig, opgenomen/uitgesloten velden bestaan
  • Weergaven die altijd nodig zijn source.key-fields
  • Opgeslagen procedures: parameters komen overeen met handtekening
  • Relaties: doelentiteit bestaat, velden koppelen die zijn uitgelijnd met sleutels; linking.object moet bestaan voor veel-op-veel
  • Beleid verwijst naar geldige velden
  • TTL niet-negatief opslaan in cache

Fouten en oplossingen

Probleem Example Repareren
Ontbrekende sleutelvelden Weergeven zonder key-fields Voeg source.key-fieldstoe.
Ongeldige kolom fields.include lijsten met ontbrekende kolom Naam verwijderen of herstellen.
Relatie komt niet overeen Aantal velden koppelen != PK-telling Koppelingsvelden herstellen.

Uitvoervoorbeelden

Succes:

Data API builder <version>
Config is valid.

Mislukking:

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

Opmerking

Validatiefouten zijn fasespecifiek. Herstel de eerste mislukte fase voordat deze opnieuw wordt uitgevoerd.

Environment-Specific-bestanden

Als DAB_ENVIRONMENT dit is ingesteld, validate wordt geladen dab-config.<DAB_ENVIRONMENT>.json.

Example

export DAB_ENVIRONMENT=Staging
dab validate

Opmerking

De validatie controleert slechts één opgelost bestand. Er worden geen omgevingsvarianten samengevoegd.

Voorbeeldgebruik

Basisch:

dab validate

Expliciet bestand:

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

Meerdere omgevingen:

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

CI-snel mislukt:

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

Werkproces

  1. Voer dab validate uit
  2. De eerste mislukte fase herstellen
  3. Opnieuw uitvoeren totdat afsluitcode 0 is
  4. Gevalideerde configuratie doorvoeren

Aanbeveling

Valideer vaak kleine wijzigingen. Gebruik versiebeheerverschil om snel regressies aan te geven.