Condividi tramite


Informazioni di riferimento sullo schema di configurazione di Generatore API dati

Il generatore di API dati richiede almeno un file di configurazione da eseguire. Questo file basato su JSON definisce la configurazione dell'API, dalle impostazioni dell'ambiente alle definizioni di entità. Inizia con una $schema proprietà che abilita la convalida dello schema per il resto del file.

Proprietà di primo livello

Property Description
$schema URI dello schema JSON per questa configurazione.
origine dati Oggetto contenente le impostazioni di connettività del database.
data-source-files Matrice di altri percorsi di file di configurazione.
runtime Oggetto che configura i comportamenti di runtime.
entities Oggetto che definisce tutte le entità esposte tramite REST o GraphQL.
autoentities Oggetto che definisce regole basate su criteri che espongono automaticamente oggetti di database corrispondenti come entità (solo MSSQL).
azure-key-vault Configurazione di Azure Key Vault per la gestione dei segreti.

Proprietà dell'origine dati

Property Description
origine dati Oggetto contenente le impostazioni di connettività del database.
data-source.database-type Tipo di database usato nel back-end (mssql, postgresql, mysql, cosmosdb_nosql, cosmosdb_postgresql).
data-source.connection-string Stringa di connessione per il tipo di database selezionato.
data-source.options Opzioni specifiche del database e impostazioni avanzate.
data-source.health Configurazione del controllo integrità per l'origine dati.
data-source-files Matrice di altri percorsi di file di configurazione.

Proprietà di runtime

Property Description
runtime Oggetto che configura i comportamenti di runtime.
runtime.pagination Impostazioni di paginazione per le risposte api.
runtime.rest Configurazione globale dell'API REST.
runtime.graphql Configurazione globale dell'API GraphQL.
runtime.cache Configurazione della memorizzazione nella cache delle risposte globali.
runtime.compression Configurazione della compressione della risposta HTTP.
runtime.mcp Configurazione globale mcp (Model Context Protocol).
runtime.telemetry Telemetria, registrazione e monitoraggio della configurazione.
runtime.health Configurazione del controllo integrità globale.

Proprietà delle entità

Property Description
entities Oggetto che definisce tutte le entità esposte tramite REST o GraphQL.
entities.entity-name.source Dettagli dell'origine del database per l'entità.
entities.entity-name.rest Configurazione dell'API REST per l'entità.
entities.entity-name.graphql Configurazione dell'API GraphQL per l'entità.
entities.entity-name.permissions Autorizzazioni e controllo di accesso per l'entità.
entities.entity-name.relationships Relazioni con altre entità.
entities.entity-name.cache Configurazione della memorizzazione nella cache a livello di entità.
entities.entity-name.health Configurazione del controllo integrità a livello di entità.
entities.entity-name.mcp Configurazione MCP a livello di entità.
entities.entity-name.fields Metadati dei campi, alias e designazioni di chiave primaria.
entities.entity-name.description Descrizione dell'entità leggibile.

Schema

Parent Property Type Required Default
$root $schema string ✔️ Sì None

Ogni file di configurazione inizia con una $schema proprietà , specificando lo schema JSON per la convalida.

Format

{
  "$schema": <string>
}

Example

{
  "$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json"
}

Versioning

I file di schema sono disponibili in URL specifici, assicurandosi di poter usare la versione corretta o lo schema disponibile più recente.

https://github.com/Azure/data-api-builder/releases/download/<VERSION>-<suffix>/dab.draft.schema.json

Sostituire VERSION-suffix con la versione desiderata.

https://github.com/Azure/data-api-builder/releases/download/v0.3.7-alpha/dab.draft.schema.json

File di origine dati

Parent Property Type Required Default
$root data-source-files Matrice di stringhe ❌ No None

Il generatore di API dati supporta più file di configurazione, con uno designato come file di primo livello che gestisce runtime le impostazioni. Tutte le configurazioni condividono lo stesso schema JSON, consentendo runtime le impostazioni in qualsiasi file o in ogni file senza errori. Suddividere le entità per un'organizzazione migliore.

Diagramma di più file di configurazione a cui si fa riferimento come matrice all'interno di un singolo file di configurazione.

Format

{
  "data-source-files": [ "<string>" ]
}

Più regole di configurazione

  • Ogni file di configurazione deve includere la proprietà data-source.
  • Ogni file di configurazione deve includere la entities proprietà (o autoentities).
  • La configurazione di primo livello deve includere runtime.
  • Le configurazioni figlio possono includere runtime, ma il generatore di API dati lo ignora.
  • I file di configurazione figlio possono includere i propri file figlio.
  • I file di configurazione possono essere organizzati in sottocartelle.
  • I nomi delle entità devono essere univoci in tutti i file di configurazione.
  • Le relazioni tra entità in file di configurazione diversi non sono supportate.

Examples

{
  "data-source-files": [
    "dab-config-2.json",
    "my-folder/dab-config-3.json",
    "my-folder/my-other-folder/dab-config-4.json"
  ]
}

Autoentities

Parent Property Type Required Default
$root autoentities oggetto ❌ No None

La autoentities sezione definisce regole basate su criteri che espongono automaticamente oggetti di database corrispondenti come entità DAB all'avvio. Ogni chiave nell'oggetto è una definizione denominata contenente modelli, un modello e autorizzazioni.

Importante

Le origini dati MSSQL attualmente supportano solo le origini dati MSSQL .

Quando autoentities è presente, la entities sezione non è più necessaria. Lo schema di configurazione consente o autoentitiesentities (o entrambi). Se entrambi sono presenti, le entità definite in modo esplicito hanno la precedenza sulle corrispondenze di auto con lo stesso nome.

Format

{
  "autoentities": {
    "<definition-name>": {
      "patterns": {
        "include": [ "<string>" ],
        "exclude": [ "<string>" ],
        "name": "<string>"
      },
      "template": {
        "mcp": { "dml-tools": <boolean> },
        "rest": { "enabled": <boolean> },
        "graphql": { "enabled": <boolean> },
        "health": { "enabled": <boolean> },
        "cache": {
          "enabled": <boolean>,
          "ttl-seconds": <integer>,
          "level": "<string>"
        }
      },
      "permissions": [
        {
          "role": "<string>",
          "actions": [ { "action": "<string>" } ]
        }
      ]
    }
  }
}

Proprietà

Property Type Required Default Description
patterns oggetto ✔️ Sì None Definisce regole di inclusione, esclusione e denominazione.
patterns.include Matrice di stringhe ❌ No ["%.%"] Modelli MSSQL LIKE per gli oggetti da includere.
patterns.exclude Matrice di stringhe ❌ No null Modelli MSSQL LIKE per gli oggetti da escludere.
patterns.name string ❌ No "{object}" Modello di interpolazione con {schema} e {object}.
template oggetto ❌ No None Configurazione predefinita applicata a tutte le entità corrispondenti.
template.mcp oggetto ❌ No None Impostazioni MCP per le entità corrispondenti.
template.mcp.dml-tools boolean ❌ No true Abilitare gli strumenti DML (Data Manipulation Language) MCP.
template.rest oggetto ❌ No None Impostazioni REST per le entità corrispondenti.
template.rest.enabled boolean ❌ No true Abilitare gli endpoint REST.
template.graphql oggetto ❌ No None Impostazioni di GraphQL per le entità corrispondenti.
template.graphql.enabled boolean ❌ No true Abilitare GraphQL.
template.health oggetto ❌ No None Impostazioni di controllo dell'integrità per le entità corrispondenti.
template.health.enabled boolean ❌ No false Abilitare i controlli di integrità.
template.cache oggetto ❌ No None Impostazioni della cache per le entità corrispondenti.
template.cache.enabled boolean ❌ No false Abilitare la memorizzazione nella cache delle risposte.
template.cache.ttl-seconds numero intero ❌ No null Tempo di memorizzazione nella cache in secondi.
template.cache.level string ❌ No "L1L2" Livello di cache.
permissions array ❌ No None Autorizzazioni applicate a tutte le entità corrispondenti.

Example

{
  "autoentities": {
    "my-def": {
      "patterns": {
        "include": [ "dbo.%" ],
        "exclude": [ "dbo.internal%" ],
        "name": "{schema}_{object}"
      },
      "template": {
        "rest": { "enabled": true },
        "graphql": { "enabled": true },
        "cache": { "enabled": true, "ttl-seconds": 30, "level": "l1l2" }
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ]
    }
  }
}

Con questa configurazione, ogni tabella e vista nello dbo schema (ad eccezione di quelle corrispondenti dbo.internal%) viene esposta automaticamente come entità DAB. Ogni entità viene denominata usando il {schema}_{object} modello (ad esempio dbo_Products, ), ha REST e GraphQL abilitato, usa la memorizzazione nella cache con una durata (TTL) di 30 secondi e concede read l'accesso anonymous al ruolo.

Tip

Usare dab auto-config per creare definizioni di autoentities dall'interfaccia della riga di comando e dab auto-config-simulate visualizzare in anteprima gli oggetti corrispondenti prima di eseguire il commit delle modifiche. Per altre informazioni, vedere le novità della versione 2.0.

Azure Key Vault (Archivio chiavi di Azure)

Parent Property Type Required Default
$root azure-key-vault oggetto ❌ No None

Configura l'integrazione di Azure Key Vault per la gestione dei segreti. Quando presente, la endpoint proprietà è obbligatoria.

Proprietà annidate

Parent Property Type Required Default
azure-key-vault endpoint string ✔️ Sì None
azure-key-vault retry-policy oggetto ❌ No None
Parent Property Type Required Default
azure-key-vault.retry-policy mode enumerazione (fixed | exponential) ❌ No "exponential"
azure-key-vault.retry-policy max-count numero intero ❌ No 3
azure-key-vault.retry-policy delay-seconds numero intero ❌ No 1
azure-key-vault.retry-policy max-delay-seconds numero intero ❌ No 60
azure-key-vault.retry-policy network-timeout-seconds numero intero ❌ No 60

Per fare riferimento ai segreti archiviati in Azure Key Vault, usare la @akv() funzione nei valori di configurazione. Il generatore di API dati risolve questi riferimenti all'avvio usando l'endpoint configurato.

Format

{
  "azure-key-vault": {
    "endpoint": "<string>",
    "retry-policy": {
      "mode": <"exponential"> (default) | <"fixed">,
      "max-count": <integer; default: 3>,
      "delay-seconds": <integer; default: 1>,
      "max-delay-seconds": <integer; default: 60>,
      "network-timeout-seconds": <integer; default: 60>
    }
  }
}

Example

{
  "azure-key-vault": {
    "endpoint": "https://my-vault.vault.azure.net/",
    "retry-policy": {
      "mode": "exponential",
      "max-count": 5,
      "delay-seconds": 2,
      "max-delay-seconds": 120,
      "network-timeout-seconds": 90
    }
  },
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@akv('sql-connection-string')"
  }
}