Sdílet prostřednictvím


Runtime

Nastavení konfigurace, která určují chování modulu runtime.

Nastavení stránkování

Property Default Description
velikost stránky runtime.pagination.max Definuje maximální počet záznamů na stránku.
runtime.pagination.default-page-size Nastaví výchozí záznamy na odpověď.

Nastavení REST

Property Default Description
runtime.rest.path "/api" Základní cesta pro koncové body REST
runtime.rest.enabled true Povolení nebo zakázání požadavků REST pro všechny entity
runtime.rest.request-body-strict true Zakáže nadbytečná pole v textu požadavku, pokud je true.

Nastavení GraphQL

Property Default Description
runtime.graphql.allow-introspection true Umožňuje dotazování základního schématu GraphQL.
runtime.graphql.path "/graphql" Základní cesta pro koncový bod GraphQL
runtime.graphql.enabled true Povolí nebo zakáže požadavky GraphQL pro všechny entity.
runtime.graphql.depth-limit null Maximální povolená hloubka dotazu GraphQL
runtime.graphql.multiple-muts.create.enabled false Umožňuje vícenásobné vytváření mutací pro všechny entity.

Nastavení hostitele

Property Default Description
runtime.host.max-response-size-mb 158 Maximální velikost (MB) odpovědi databáze povolená v jednom výsledku
runtime.host.mode "production" Spuštěný režim; "production" nebo "development"

Nastavení CORS

Property Default Description
runtime.host.cors.origins [] Povolené zdroje CORS
runtime.host.cors.allow-credentials false Nastaví hodnotu pro hlavičku Access-Control-Allow-Credentials.

Nastavení ověřování

Property Default Description
runtime.host.authentication.provider Unauthenticated Zprostředkovatel ověřování
runtime.host.authentication.jwt.audience null Cílová skupina JWT
runtime.host.authentication.jwt.issuer null Vystavitel JWT

Nastavení mezipaměti

Property Default Description
runtime.cache.enabled false Umožňuje globální ukládání odpovědí do mezipaměti.
runtime.cache.ttl-seconds 5 Doba života (sekundy) pro globální mezipaměť
runtime.cache.level-2.enabled false Umožňuje globální mezipaměť distribuované úrovně 2.
runtime.cache.level-2.provider "redis" Zprostředkovatel distribuované mezipaměti pro mezipaměť úrovně 2
runtime.cache.level-2.connection-string null Připojovací řetězec pro zprostředkovatele mezipaměti úrovně 2
runtime.cache.level-2.partition null Volitelný název oddílu pro izolování prostoru distribuované mezipaměti

Nastavení komprese

Property Default Description
runtime.compression.level optimal Úroveň komprese odpovědi HTTP (optimal, fastestnebo none)

Nastavení telemetrie

Property Default Description
runtime.telemetry.application-insights.connection-string null Připojovací řetězec Application Insights
runtime.telemetry.application-insights.enabled true Povolí nebo zakáže telemetrii Application Insights.
runtime.telemetry.open-telemetry.endpoint null Adresa URL kolektoru OpenTelemetry
runtime.telemetry.open-telemetry.headers {} Hlavičky exportu OpenTelemetry
runtime.telemetry.open-telemetry.service-name "dab" Název služby OpenTelemetry
runtime.telemetry.open-telemetry.export-protocol "grpc" Protokol OpenTelemetry ("grpc" nebo "httpprotobuf")
runtime.telemetry.open-telemetry.enabled true Povolí nebo zakáže OpenTelemetry.
runtime.telemetry.open-telemetry.enabled true Povolí nebo zakáže OpenTelemetry.
runtime.telemetry.azure-log-analytics.enabled false Povolí nebo zakáže Azure Log Analytics.
runtime.telemetry.azure-log-analytics.dab-identifier "DabLogs" Identifikátor DAB v Azure Log Analytics
runtime.telemetry.azure-log-analytics.flush-interval-seconds 5 Interval mezi dávkovými zápisy protokolu (sekundy)
runtime.telemetry.azure-log-analytics.auth.custom-table-name null Název vlastní tabulky pro Azure Log Analytics
runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id null Neměnné ID pravidla shromažďování dat
runtime.telemetry.azure-log-analytics.auth.dce-endpoint null Adresa URL koncového bodu shromažďování dat
runtime.telemetry.file.enabled false Povolí nebo zakáže protokolování jímky souborů.
runtime.telemetry.file.path "/logs/dab-log.txt" Cesta k souboru pro protokoly telemetrie
runtime.telemetry.file.rolling-interval "Day" Průběžný interval pro soubory protokolů
runtime.telemetry.file.retained-file-count-limit 1 Maximální počet uchovávaných souborů protokolu
runtime.telemetry.file.file-size-limit-bytes 1048576 Maximální velikost souboru v bajtech před uvedením
runtime.telemetry.log-level.namespace null Přepsání na úrovni protokolu specifické pro obor názvů
runtime.health.enabled true Povolí nebo zakáže koncový bod kontroly stavu globálně.
runtime.health.roles null Povolené role pro komplexní koncový bod stavu
runtime.health.cache-ttl-seconds 5 Doba života (sekundy) pro položku mezipaměti sestavy kontroly stavu
runtime.health.max-dotazování-paralelismus 4 Maximální počet souběžných dotazů na kontrolu stavu (rozsah: 1–8)

Nastavení MCP

Property Default Description
runtime.mcp.enabled true Povolí nebo zakáže globální koncový bod MCP.
runtime.mcp.path "/mcp" Základní cesta pro koncový bod MCP
runtime.mcp.description null Popis serveru odeslaný klientům MCP během inicializace
runtime.mcp.dml-tools true Povolí nebo zakáže všechny nástroje DML nebo objekt pro ovládací prvek pro jednotlivé nástroje.
runtime.mcp.dml-tools.describe-entities true Povolí nástroj describe_entities.
runtime.mcp.dml-tools.create-record true Povolí nástroj create_record.
runtime.mcp.dml-tools.read-records true Povolí nástroj read_records.
runtime.mcp.dml-tools.update-record true Povolí nástroj update_record.
runtime.mcp.dml-tools.delete-record true Povolí nástroj delete_record.
runtime.mcp.dml-tools.execute-entity true Povolí nástroj execute_entity.
runtime.mcp.dml-tools.aggregate-records true Povolí nástroj aggregate_records (logická hodnota nebo objekt s časovým limitem dotazu).

Přehled formátu

{
  "runtime": {
    "pagination": {
      "max-page-size": <integer|null> (default: `100000`),
      "default-page-size": <integer|null> (default: `100`)
    },
    "rest": {
      "path": <string> (default: "/api"),
      "enabled": <true>|<false>,
      "request-body-strict": <true>|<false> (default: `true`)
    },
    "graphql": {
      "path": <string> (default: "/graphql"),
      "enabled": <true>|<false>,
      "allow-introspection": <true>|<false>,
      "depth-limit": <integer|null> (default: `null`),
      "multiple-mutations": {
        "create": {
          "enabled": <true>|<false> (default: `false`)
        }
      }
    },
    "host": {
      "mode": <"production"> (default) | <"development">,
      "max-response-size-mb": <integer|null> (default: `158`),
      "cors": {
        "origins": [ "<string>" ],
        "allow-credentials": <true>|<false> (default: `false`)
      },
      "authentication": {
        "provider": <string> (default: "Unauthenticated"),
        "jwt": {
          "audience": "<string>",
          "issuer": "<string>"
        }
      }
    }
  },
    "compression": {
      "level": <"optimal"> (default) | <"fastest"> | <"none">
    },
    "cache": {
      "enabled": <true>|<false> (default: `false`),
      "ttl-seconds": <integer> (default: `5`),
      "level-2": {
        "enabled": <true>|<false> (default: `false`),
        "provider": <"redis">,
        "connection-string": <string>,
        "partition": <string>
      }
    },
    "telemetry": {
      "application-insights": {
        "connection-string": "<string>",
        "enabled": <true>|<false> (default: `true`)
      },
      "open-telemetry": {
        "endpoint": "<string>",
        "headers": "<string>",
        "service-name": <string> (default: "dab"),
        "exporter-protocol": <"grpc"> (default) | <"httpprotobuf">,
        "enabled": <true>|<false> (default: `true`)
      },
      "azure-log-analytics": {
        "enabled": <true>|<false> (default: `false`),
        "dab-identifier": <string> (default: "DabLogs"),
        "flush-interval-seconds": <integer> (default: `5`),
        "auth": {
          "custom-table-name": <string>,
          "dcr-immutable-id": <string>,
          "dce-endpoint": <string>
        }
      },
      "file": {
        "enabled": <true>|<false> (default: `false`),
        "path": <string> (default: "/logs/dab-log.txt"),
        "rolling-interval": <string> (default: "Day"),
        "retained-file-count-limit": <integer> (default: `1`),
        "file-size-limit-bytes": <integer> (default: `1048576`)
      },
      "log-level": {
        // namespace keys
        "<namespace>": <"trace"|"debug"|"information"|"warning"|"error"|"critical"|"none"|null>
      }
    },
    "health": {
      "enabled": <true>|<false> (default: `true`),
      "roles": [ "<string>" ],
      "cache-ttl-seconds": <integer> (default: `5`),
      "max-query-parallelism": <integer> (default: `4`)
    },
    "mcp": {
      "enabled": <true>|<false> (default: `true`),
      "path": <string> (default: `"/mcp"`),
      "description": <string>,
      "dml-tools": <true>|<false> | {
        "describe-entities": <true>|<false> (default: `true`),
        "create-record": <true>|<false> (default: `true`),
        "read-records": <true>|<false> (default: `true`),
        "update-record": <true>|<false> (default: `true`),
        "delete-record": <true>|<false> (default: `true`),
        "execute-entity": <true>|<false> (default: `true`),
        "aggregate-records": <true>|<false> | {
          "enabled": <true>|<false> (default: `true`),
          "query-timeout": <integer> (default: `30`)
        }
      }
    }
  }
}

Režim (modul runtime hostitele)

Parent Property Typ Required Default
runtime host enum (production | development) ❌ Ne production

Chování vývoje

  • Povoleno Nitro (dříve Banana Cake Pop) pro testování GraphQL
  • Povolené uživatelské rozhraní Swagger pro testování REST
  • Povolené anonymní kontroly stavu
  • Zvýšená úroveň podrobností protokolování (ladění)

Format

{
  "runtime": {
    "host": {
      "mode": "production" (default) | "development"
    }
  }
}

Maximální velikost odpovědi (modul runtime hostitele)

Parent Property Typ Required Default
runtime.host max-response-size-mb integer ❌ Ne 158

Nastaví maximální velikost (v megabajtech) pro libovolný daný výsledek. Vzhledem k tomu, že velké odpovědi můžou systém zatížit, max-response-size-mb zakládá celkovou velikost (liší se od počtu řádků), aby se zabránilo přetížení, což je zejména u velkých sloupců, jako je text nebo JSON.

Value Result
nenastaveno Použít výchozí
null Použít výchozí
integer Jakékoli kladné 32bitové celé číslo
<= 0 Není podporováno

Format

{
  "runtime": {
    "host": {
      "max-response-size-mb": <integer; default: 158>
    }
  }
}

GraphQL (modul runtime)

Parent Property Typ Required Default
runtime graphql objekt ❌ Ne -

Globální konfigurace GraphQL

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.graphql enabled boolean ❌ Ne None
runtime.graphql path řetězec ❌ Ne "/graphql"
runtime.graphql depth-limit integer ❌ Ne Žádné (neomezené)
runtime.graphql allow-introspection boolean ❌ Ne True
runtime.graphql multiple-mutations.create.enabled boolean ❌ Ne False

Poznámky k vlastnostem

  • Pro vlastnost nejsou povoleny path dílčí cesty.
  • Slouží depth-limit k omezení vnořených dotazů.
  • Nastavte allow-introspection na false skrytí schématu GraphQL.
  • Slouží multiple-mutations k vložení více entit do jedné mutaci.

Format

{
  "runtime": {
    "graphql": {
      "enabled": <true> (default) | <false>
      "depth-limit": <integer|null> (default: `null`),
      "path": <string> (default: /graphql),
      "allow-introspection": <true> (default) | <false>,
      "multiple-mutations": {
        "create": {
          "enabled": <true> | <false> (default)
        }
      }
    }
  }
}

Příklad: více mutací

Configuration

{
  "runtime": {
    "graphql": {
      "multiple-mutations": {
        "create": {
          "enabled": true
        }
      }
    }
  },
  "entities": {
    "User": {
      "source": "dbo.Users",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["create"] // entity permissions are required
        }
      ]
    }
  }
}

GraphQL mutací

mutation {
  createUsers(input: [
    { name: "Alice", age: 30, isAdmin: true },
    { name: "Bob", age: 25, isAdmin: false },
    { name: "Charlie", age: 35, isAdmin: true }
  ]) {
    id
    name
    age
    isAdmin
  }
}

REST (modul runtime)

Parent Property Typ Required Default
runtime rest objekt ❌ Ne -

Globální konfigurace REST.

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.rest enabled boolean ❌ Ne None
runtime.rest path řetězec ❌ Ne "/api"
runtime.rest request-body-strict boolean ❌ Ne True

Poznámky k vlastnostem

  • Pokud je enabledglobální false hodnota , na jednotlivých úrovních enabled entit nezáleží.
  • Vlastnost path nepodporuje hodnoty dílčích cest, jako je /api/data.
  • request-body-strict byla zavedena, aby se zjednodušily objekty POCO .NET.
request-body-strict Behavior
true Nadbytečná pole v textu požadavku způsobují BadRequest výjimku.
false Další pole v textu požadavku se ignorují.

Format

{
  "runtime": {
    "rest": {
      "enabled": <true> (default) | <false>,
      "path": <string> (default: /api),
      "request-body-strict": <true> (default) | <false>
    }
  }
}

Příklad: request-body-strict

  • Sloupce s default() hodnotou jsou ignorovány pouze v INSERT případech, kdy je nulljejich hodnota v datové části . V důsledku toho INSERT operace do default() sloupců, pokud request-body-strict je true, nemohou vést k explicitním null hodnotám. K dosažení tohoto chování UPDATE se vyžaduje operace.
  • Sloupce s default() hodnotou datové části se neignorují UPDATE bez ohledu na hodnotu datové části.
  • Počítané sloupce se vždy ignorují.
  • Automaticky generované sloupce jsou vždy ignorovány.

Ukázková tabulka

CREATE TABLE Users (
    Id INT PRIMARY KEY IDENTITY, -- auto-generated column
    Name NVARCHAR(50) NOT NULL,
    Age INT DEFAULT 18, -- column with default
    IsAdmin BIT DEFAULT 0, -- column with default
    IsMinor AS IIF(Age <= 18, 1, 0) -- computed column
);

Obsah žádosti

{
  "Id": 999,
  "Name": "Alice",
  "Age": null,
  "IsAdmin": null,
  "IsMinor": false,
  "ExtraField": "ignored"
}

Vložit chování při request-body-strict = false

INSERT INTO Users (Name) VALUES ('Alice');
-- Default values for Age (18) and IsAdmin (0) are applied by the database.
-- IsMinor is ignored because it’s a computed column.
-- ExtraField is ignored.
-- The database generates the Id value.

Odpověďové zatížení

{
  "Id": 1,          // Auto-generated by the database
  "Name": "Alice",
  "Age": 18,        // Default applied
  "IsAdmin": false, // Default applied
  "IsMinor": true   // Computed
}

Aktualizovat chování při request-body-strict = false

UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.

Odpověďové zatížení

{
  "Id": 1,
  "Name": "Alice Updated",
  "Age": null,
  "IsAdmin": false,
  "IsMinor": false // Recomputed by the database (false when age is `null`)
}

CORS (modul runtime hostitele)

Parent Property Typ Required Default
runtime.host cors objekt ❌ Ne -

Globální konfigurace CORS

Tip

CORS je zkratka pro sdílení prostředků mezi zdroji. Je to funkce zabezpečení prohlížeče, která určuje, jestli webové stránky můžou provádět požadavky na jinou doménu, než která je obsluhovala.

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.host.cors allow-credentials boolean ❌ Ne False
runtime.host.cors origins Řetězcové pole ❌ Ne None

Note

Vlastnost allow-credentials nastaví hlavičku Access-Control-Allow-Credentials CORS.

Format

{
  "runtime": {
    "host": {
      "cors": {
        "allow-credentials": <true> | <false> (default),
        "origins": ["<array-of-strings>"]
      }
    }
  }
}

Note

Zástupný znak * je platný jako hodnota pro origins.

Zprostředkovatel (modul runtime hostitele ověřování)

Parent Property Typ Required Default
runtime.host.authentication provider enum (UnauthenticatedSimulator | Custom | | | EntraId | StaticWebAppsAppService) ❌ Ne Unauthenticated

Vybere metodu ověřování. Každý zprostředkovatel ověřuje identitu odlišně. Podrobné pokyny k nastavení najdete v následující tabulce.

Note

Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.

Souhrn zprostředkovatele

Provider Případ použití Zdroj identity Praktičtí průvodci
Unauthenticated DAB se nachází za důvěryhodným front-endem (výchozí) Žádné – všechny požadavky běží jako anonymous Konfigurace neověřeného zprostředkovatele
AppService Aplikace hostované v Azure (EasyAuth) X-MS-CLIENT-PRINCIPAL Záhlaví Konfigurace ověřování ve službě App Service
EntraID Microsoft Entra ID (Azure AD) Nosný token JWT Konfigurace ověřování Entra ID
Custom Zprostředkovatele identity třetích stran (Okta, Auth0) Nosný token JWT Konfigurace vlastního ověřování JWT
Simulator Pouze místní testování Simulovaný Konfigurace ověřování simulátoru

Note

EntraId Zprostředkovatel byl dříve pojmenován AzureAd. Starý název stále funguje kvůli kompatibilitě.

Neověřená (výchozí)

Pokud Unauthenticated je nastavený (nebo není zadán žádný zprostředkovatel), DAB nekontroluje ani neověřuje žádné JWT. Všechny požadavky se spouštějí jako anonymous role. Front-endová služba, jako je Azure API Management nebo application Gateway, může dál zpracovávat zásady ověřování nebo přístupu, než požadavky dosáhnou DAB, ale DAB dál autorizuje pouze jako anonymous.

Important

Pokud Unauthenticated je aktivní authenticated a vlastní role definované v oprávněních entity se nikdy neaktivují. Pokud vaše konfigurace tyto role obsahuje, DAB při spuštění vygeneruje upozornění.

{
  "host": {
    "authentication": {
      "provider": "Unauthenticated"
    }
  }
}

AppService

Důvěřuje hlavičkám identit vloženým službou Azure App Service EasyAuth.

{
  "host": {
    "authentication": {
      "provider": "AppService"
    }
  }
}

EntraID

Ověřuje tokeny JWT vydané id Microsoft Entra.

{
  "host": {
    "authentication": {
      "provider": "EntraId",
      "jwt": {
        "audience": "<application-id>",
        "issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
      }
    }
  }
}

Custom

Ověřuje tokeny JWT od zprostředkovatelů identity třetích stran.

{
  "host": {
    "authentication": {
      "provider": "Custom",
      "jwt": {
        "audience": "<api-audience>",
        "issuer": "https://<your-idp-domain>/"
      }
    }
  }
}

Simulátor

Simuluje ověřování pro místní vývoj a testování.

{
  "host": {
    "authentication": {
      "provider": "Simulator"
    }
  }
}

Important

Poskytovatel Simulator funguje pouze v případech, kdy runtime.host.mode je development. DaB se nepodaří spustit, pokud je simulátor nakonfigurovaný v produkčním režimu.

Výběr role

Pro všechny zprostředkovatele kromě simulátoru hlavička X-MS-API-ROLE vybere, kterou roli se má použít z deklarací identity ověřeného uživatele. Pokud tento parametr vynecháte, požadavek použije systémovou Authenticated roli. Podrobnosti o vyhodnocení rolí najdete v tématu Přehled autorizace.

JWT (modul runtime hostitele ověřování)

Parent Property Typ Required Default
runtime.host.authentication jwt objekt ❌ Ne -

Globální konfigurace webového tokenu JSON (JWT).

Diagram podpory webových tokenů JSON v Tvůrci rozhraní Data API

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.host.authentication.jwt audience řetězec ✔️ Ano* None
runtime.host.authentication.jwt issuer řetězec ✔️ Ano* None

* Obě audience a issuer jsou vyžadovány jwt , pokud je objekt k dispozici. Samotný jwt objekt je vyžadován, pokud je EntraIDzprostředkovatel , AzureADnebo Custom.

Format

{
  "runtime": {
    "host": {
      "authentication": {
        "jwt": {
          "audience": "<client-id>",
          "issuer": "<issuer-url>"
        }
      }
    }
  }
}

Stránkování (modul runtime)

Parent Property Typ Required Default
runtime pagination objekt ❌ Ne -

Globální limity stránkování pro koncové body REST a GraphQL

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.pagination max-page-size int ❌ Ne 100,000
runtime.pagination default-page-size int ❌ Ne 100
runtime.pagination next-link-relative boolean ❌ Ne false

Maximální podporovaná velikost stránky

Value Result
integer Podporuje se jakékoli kladné 32bitové celé číslo.
0 Není podporováno.
-1 Výchozí hodnota je maximální podporovaná hodnota.
< -1 Není podporováno.

Podporované hodnoty výchozí velikosti stránky

Value Result
integer Jakékoli kladné celé číslo menší než aktuální max-page-size.
0 Není podporováno.
-1 Výchozí hodnota je aktuální nastavení max-page-size.
< -1 Není podporováno.

Pokud next-link-relative je tomu tak true, hodnoty stránkování nextLink používají relativní adresy URL místo absolutních adres URL.

Value Example
false (výchozí) "nextLink": "https://localhost:5001/api/users?$after=..."
true "nextLink": "/api/users?$after=..."

Format

{
  "runtime": {
    "pagination": {
      "max-page-size": <integer; default: 100000>,
      "default-page-size": <integer; default: 100>,
      "next-link-relative": <boolean; default: false>
    }
  }
}

Note

Pokud je hodnota větší než max-page-size, výsledky jsou omezeny na max-page-sizehodnotu .

Příklad: Stránkování v REST

Request

GET https://localhost:5001/api/users

Odpověďové zatížení

{
  "value": [
    {
      "Id": 1,
      "Name": "Alice",
      "Age": 30,
      "IsAdmin": true,
      "IsMinor": false
    },
    {
      "Id": 2,
      "Name": "Bob",
      "Age": 17,
      "IsAdmin": false,
      "IsMinor": true
    }
  ],
  "nextLink": "https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}

Další stránka žádosti

GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==

Příklad: Stránkování v GraphQL

Datová část požadavku (dotaz)

query {
  users {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Odpověďové zatížení

{
  "data": {
    "users": {
      "items": [
        {
          "Id": 1,
          "Name": "Alice",
          "Age": 30,
          "IsAdmin": true,
          "IsMinor": false
        },
        {
          "Id": 2,
          "Name": "Bob",
          "Age": 17,
          "IsAdmin": false,
          "IsMinor": true
        }
      ],
      "hasNextPage": true,
      "endCursor": "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
    }
  }
}

Další stránka žádosti

query {
  users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Příklad: Přístup k žádostem max-page-size

max-page-size Použijte hodnotu nastavením $limit (REST) nebo first (GraphQL) na -1.

REST

GET https://localhost:5001/api/users?$limit=-1

GraphQL

query {
  users(first: -1) {
    items {
      ...
    }
  }
}

Komprese (modul runtime)

Note

Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.

Parent Property Typ Required Default
runtime compression objekt ❌ Ne -

Konfigurace komprese odpovědí HTTP Pokud je tato možnost povolená, DAB komprimuje těla odpovědí, aby se snížily velikosti datových částí a zlepšily se přenosové rychlosti.

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.compression level řetězec ❌ Ne "optimal"

Podporované hodnoty pro level

Value Description Úspory komprese Dopad na výkon
optimal Poměr a rychlost zůstatku (výchozí) Gzip: 90.5% / Brotli: 92.2% Střední využití procesoru, mírné zvýšení latence
fastest Určuje prioritu rychlosti oproti poměru. Gzip: 89.8% / Brotli: 91.1% Nízké využití procesoru, minimální latence
none Bez komprese 0% (směrný plán: 12 673 bajtů) None

Hlavičky HTTP klienta

Komprese se vyvolá hlavičkou Accept-Encoding klienta. Podporované algoritmy jsou Gzip a Brotli. Nastavení level konfiguruje strategii komprese, když klient i server podporují více algoritmů.

Podporovaná záhlaví

Hlavička HTTP Použitý algoritmus
Accept-Encoding: gzip Gzip
Accept-Encoding: br Brotli

Format

{
  "runtime": {
    "compression": {
      "level": <"optimal"> (default) | <"fastest"> | <"none">
    }
  }
}

Example

{
  "runtime": {
    "compression": {
      "level": "optimal"
    }
  }
}

Mezipaměť (modul runtime)

Parent Property Typ Required Default
runtime cache objekt ❌ Ne -

Konfigurace globální mezipaměti.

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.cache enabled boolean ❌ Ne False
runtime.cache ttl-seconds integer ❌ Ne 5
runtime.cache level-2 objekt ❌ Ne -
Parent Property Typ Required Default
runtime.cache.level-2 enabled boolean ❌ Ne False
runtime.cache.level-2 provider řetězec ❌ Ne redis
runtime.cache.level-2 connection-string řetězec ❌ Ne None
runtime.cache.level-2 partition řetězec ❌ Ne None

Tip

Vlastnost na úrovni cache.ttl-seconds entity se ve výchozím nastavení nastaví na tuto globální hodnotu.

Tip

Kompletní nastavení, chování na úrovni mezipaměti a příklady Redis najdete v tématu Implementace mezipaměti 2.

Format

{
  "runtime": {
    "cache":  {
      "enabled": <boolean>,
      "ttl-seconds": <integer>,
      "level-2": {
        "enabled": <boolean>,
        "provider": "redis",
        "connection-string": <string>,
        "partition": <string>
      }
    }
  }
}

Important

Pokud je enabledglobální false hodnota , na jednotlivých úrovních enabled entit nezáleží.

Pokud level-2.enabled je tomu tak true, jazyk DAB kromě místní mezipaměti v paměti používá kromě místní mezipaměti v paměti také nakonfigurovaného zprostředkovatele distribuované mezipaměti. Entita nakonfigurovaná s úrovní L1L2 mezipaměti nejprve zkontroluje místní mezipaměť a pak distribuovanou mezipaměť před přechodem do databáze.

Telemetrie (modul runtime)

Parent Property Typ Required Default
runtime telemetry objekt ❌ Ne -

Globální konfigurace telemetrie

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.telemetry log-level dictionary ❌ Ne None
runtime.telemetry application-insights objekt ❌ Ne -
runtime.telemetry open-telemetry objekt ❌ Ne -
runtime.telemetry azure-log-analytics objekt ❌ Ne -
runtime.telemetry file objekt ❌ Ne -

Konfiguruje úroveň podrobností protokolování pro každý obor názvů. Tato konfigurace se řídí standardními konvencemi protokolování rozhraní .NET a umožňuje podrobnou kontrolu, i když předpokládá, že jsou interní prvky tvůrce rozhraní Data API trochu obeznámené. Tvůrce rozhraní Data API je open source: https://aka.ms/dab

Format

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "namespace": "log-level",
        "namespace": "log-level"
      }
    }
  }
}

Tip

log-level lze znovu načíst za provozu ve vývoji i v produkčním prostředí. V současné době je to jediná vlastnost, která podporuje opětovné načítání za provozu v produkčním prostředí.

Example

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
        "Azure.DataApiBuilder.Core": "information",
        "default": "warning"
      }
    }
  }
}

Application Insights (telemetrie)

Parent Property Typ Required Default
runtime.telemetry application-insights objekt ❌ Ne -

Konfiguruje protokolování do Application Insights.

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.telemetry.application-insights enabled boolean ❌ Ne true
runtime.telemetry.application-insights connection-string řetězec ✔️ Ano None

Format

{
  "runtime": {
    "telemetry": {
      "application-insights": {
        "enabled": <true; default: true> | <false>
        "connection-string": <string>
      }
    }
  }
}

OpenTelemetry (telemetrie)

Parent Property Typ Required Default
runtime.telemetry open-telemetry objekt ❌ Ne -

Konfiguruje protokolování pro otevření telemetrie.

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.telemetry.open-telemetry enabled boolean ❌ Ne true
runtime.telemetry.open-telemetry endpoint řetězec ✔️ Ano None
runtime.telemetry.open-telemetry headers řetězec ❌ Ne None
runtime.telemetry.open-telemetry service-name řetězec ❌ Ne "dab"
runtime.telemetry.open-telemetry exporter-protocol enum (grpc | httpprotobuf) ❌ Ne grpc

Více záhlaví jsou , oddělená čárkami.

Format

{
  "runtime": {
    "telemetry": {
      "open-telemetry": {
        "enabled": <true> (default) | <false>,
        "endpoint": <string>,
        "headers": <string>,
        "service-name": <string> (default: "dab"),
        "exporter-protocol": <"grpc" (default) | "httpprotobuf">
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "open-telemetry": {
        "enabled": true,
        // a gRPC endpoint example
        "endpoint": "http://localhost:4317",
        // an HTTP/protobuf endpoint example
        "endpoint": "http://localhost:4318/v1/metrics",
        "headers": "api-key=key,other-config-value=value",
        "service-name": "dab",
      }
    }
  }
}

Přečtěte si další informace o OTEL_EXPORTER_OTLP_HEADERS.

Note

GRPC (4317) je rychlejší a podporuje streamování, ale vyžaduje více kroků nastavení. HTTP/protobuf (4318) je jednodušší a jednodušší ladit, ale méně efektivní.

Azure Log Analytics (telemetrie)

Parent Property Typ Required Default
runtime.telemetry azure-log-analytics objekt ❌ Ne -

Konfiguruje protokolování do Azure Log Analytics prostřednictvím koncového bodu shromažďování dat. Pokud je tato možnost povolená, DAB odesílá telemetrická data v dávkách v konfigurovatelném intervalu.

Note

Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.telemetry.azure-log-analytics enabled boolean ❌ Ne false
runtime.telemetry.azure-log-analytics dab-identifier řetězec ❌ Ne "DabLogs"
runtime.telemetry.azure-log-analytics flush-interval-seconds integer ❌ Ne 5
runtime.telemetry.azure-log-analytics auth objekt ✔️ Ano* -

* auth je vyžadováno v případě enabled , že je true.

Parent Property Typ Required Default
runtime.telemetry.azure-log-analytics.auth custom-table-name řetězec ✔️ Ano* null
runtime.telemetry.azure-log-analytics.auth dcr-immutable-id řetězec ✔️ Ano* null
runtime.telemetry.azure-log-analytics.auth dce-endpoint řetězec ✔️ Ano* null

* Požadováno, pokud enabled je true.

  • dab-identifier– popisek předaný službě Log Analytics, který pomáhá rozlišit, které protokoly pocházejí od Tvůrce rozhraní DATA API.
  • flush-interval-seconds– časový interval (v sekundách) mezi odesíláním dávek telemetrických dat.
  • custom-table-name– název vlastní tabulky ve službě Azure Log Analytics, ve které jsou uložená data.
  • dcr-immutable-id– neměnné ID pravidla shromažďování dat, které definuje způsob shromažďování dat.
  • dce-endpoint– adresa URL koncového bodu shromažďování dat použitá k odesílání telemetrických dat.

Format

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": <true> | <false> (default),
        "dab-identifier": <string> (default: "DabLogs"),
        "flush-interval-seconds": <integer> (default: 5),
        "auth": {
          "custom-table-name": "<string>",
          "dcr-immutable-id": "<string>",
          "dce-endpoint": "<string>"
        }
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "azure-log-analytics": {
        "enabled": true,
        "dab-identifier": "MyDabInstance",
        "flush-interval-seconds": 10,
        "auth": {
          "custom-table-name": "DabTelemetry_CL",
          "dcr-immutable-id": "dcr-abc123def456",
          "dce-endpoint": "https://my-dce.eastus-1.ingest.monitor.azure.com"
        }
      }
    }
  }
}

Soubor (telemetrie)

Parent Property Typ Required Default
runtime.telemetry file objekt ❌ Ne -

Konfiguruje zápis protokolů telemetrie do místního souboru. Pokud je tato možnost povolená, DAB zapíše výstup strukturovaného protokolu do zadané cesty k souboru s konfigurovatelnými intervaly a omezeními velikosti.

Note

Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.telemetry.file enabled boolean ❌ Ne false
runtime.telemetry.file path řetězec ✔️ Ano* "/logs/dab-log.txt"
runtime.telemetry.file rolling-interval výčet ❌ Ne "Day"
runtime.telemetry.file retained-file-count-limit integer ❌ Ne 1
runtime.telemetry.file file-size-limit-bytes integer ❌ Ne 1048576

* path je vyžadováno v případě enabled , že je true.

Hodnoty klouzavého intervalu

Value Description
Minute Nový soubor protokolu každou minutu
Hour Nový soubor protokolu každou hodinu
Day Nový soubor protokolu každý den (výchozí)
Month Nový soubor protokolu každý měsíc
Year Každý rok nový soubor protokolu
Infinite Nikdy se nevrácet do nového souboru

Format

{
  "runtime": {
    "telemetry": {
      "file": {
        "enabled": <true> | <false> (default),
        "path": <string> (default: "/logs/dab-log.txt"),
        "rolling-interval": <"Day"> (default) | <"Minute"> | <"Hour"> | <"Month"> | <"Year"> | <"Infinite">,
        "retained-file-count-limit": <integer> (default: 1),
        "file-size-limit-bytes": <integer> (default: 1048576)
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "file": {
        "enabled": true,
        "path": "/var/log/dab/dab-telemetry.txt",
        "rolling-interval": "Hour",
        "retained-file-count-limit": 24,
        "file-size-limit-bytes": 5242880
      }
    }
  }
}

MCP (modul runtime)

Parent Property Typ Required Default
runtime mcp objekt ❌ Ne -

Nakonfiguruje server MCP (SQL Model Context Protocol), který zveřejňuje databázové entity jako nástroje MCP pro agenty AI.

Note

Funkce tvůrce rozhraní Data API 2.0 popsané v této části jsou aktuálně ve verzi Preview a můžou se změnit před obecnou dostupností. Další informace najdete v tématu Co je nového ve verzi 2.0.

Vnořené vlastnosti

Parent Property Typ Required Default
runtime.mcp enabled boolean ❌ Ne true
runtime.mcp path řetězec ❌ Ne "/mcp"
runtime.mcp description řetězec ❌ Ne null
runtime.mcp dml-tools logická hodnota nebo objekt ❌ Ne true

Vlastnost dml-tools přijímá logickou hodnotu pro povolení nebo zakázání všech nástrojů nebo objekt pro řízení jednotlivých nástrojů:

Parent Property Typ Required Default
runtime.mcp.dml-tools describe-entities boolean ❌ Ne true
runtime.mcp.dml-tools create-record boolean ❌ Ne true
runtime.mcp.dml-tools read-records boolean ❌ Ne true
runtime.mcp.dml-tools update-record boolean ❌ Ne true
runtime.mcp.dml-tools delete-record boolean ❌ Ne true
runtime.mcp.dml-tools execute-entity boolean ❌ Ne true
runtime.mcp.dml-tools aggregate-records logická hodnota nebo objekt ❌ Ne true

Nástroj aggregate-records přijímá logickou hodnotu nebo objekt s dalšími nastaveními:

Parent Property Typ Required Default Rozmezí
runtime.mcp.dml-tools.aggregate-records enabled boolean ❌ Ne true
runtime.mcp.dml-tools.aggregate-records query-timeout integer ❌ Ne 30 1–600 sekund

Format

{
  "runtime": {
    "mcp": {
      "enabled": <true> (default) | <false>,
      "path": <string> (default: "/mcp"),
      "description": <string>,
      "dml-tools": {
        "describe-entities": <true> | <false>,
        "create-record": <true> | <false>,
        "read-records": <true> | <false>,
        "update-record": <true> | <false>,
        "delete-record": <true> | <false>,
        "execute-entity": <true> | <false>,
        "aggregate-records": {
          "enabled": <true> | <false>,
          "query-timeout": <integer; default: 30>
        }
      }
    }
  }
}

Example

{
  "runtime": {
    "mcp": {
      "enabled": true,
      "dml-tools": {
        "describe-entities": true,
        "create-record": true,
        "read-records": true,
        "update-record": true,
        "delete-record": true,
        "execute-entity": true,
        "aggregate-records": {
          "enabled": true,
          "query-timeout": 30
        }
      }
    }
  }
}

Chcete-li povolit nebo zakázat všechny nástroje DML najednou, nastavte "dml-tools" na true hodnotu nebo false.

Když nástroj zakážete na úrovni modulu runtime, nástroj se nikdy nezobrazí v odpovědi MCP tools/list a nelze ho vyvolat bez ohledu na oprávnění na úrovni entity. Další informace o jednotlivých nástrojích DML najdete v tématu Nástroje jazyka DML (Data Manipulat Language).

Použití rozhraní příkazového řádku

dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true
dab configure --runtime.mcp.dml-tools.aggregate-records.enabled true

Stav (modul runtime)

Parent Property Typ Required Default
runtime health objekt ❌ Ne -

Konfigurace koncového bodu globální kontroly stavu (/health).

Vnořené vlastnosti

Parent Property Typ Required Default Rozsah/poznámky
runtime.health enabled boolean ❌ Ne true
runtime.health roles Řetězcové pole ✔️ Ano* null *Požadováno v produkčním režimu
runtime.health cache-ttl-seconds integer ❌ Ne 5 Min: 0
runtime.health max-query-parallelism integer ❌ Ne 4 Min: 1, Max: Osm (upínací)

Chování při vývoji vs. produkčního prostředí

Condition Chování při vývoji Chování v produkčním prostředí
health.enabled = nepravda 403 stav 403 stav
health.enabled = pravda Závisí na roli. Závisí na roli.
roles vynecháno nebo null Zobrazený stav 403 stav
aktuální role není v roles 403 stav 403 stav
aktuální role v roles Zobrazený stav Zobrazený stav
roles zahrnuje anonymous Zobrazený stav Zobrazený stav

Format

{
  "health": {
    "enabled": <true> (default) | <false>,
    "roles": [ <string> ], // required in production
    "cache-ttl-seconds": <integer; default: 5>,
    "max-query-parallelism": <integer; default: 4>
  }
}

Note

Pokud je enabledglobální false hodnota , na jednotlivých úrovních enabled entit nezáleží.

Example

{
  "health": {
    "enabled": true,
    "roles": ["admin", "support"],
    "cache-ttl-seconds": 10,
    "max-query-parallelism": 6
  }
}