Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
pathdílčí cesty. - Slouží
depth-limitk omezení vnořených dotazů. - Nastavte
allow-introspectionnafalseskrytí schématu GraphQL. - Slouží
multiple-mutationsk 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ífalsehodnota , na jednotlivých úrovníchenabledentit nezáleží. - Vlastnost
pathnepodporuje hodnoty dílčích cest, jako je/api/data. -
request-body-strictbyla 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 vINSERTpřípadech, kdy jenulljejich hodnota v datové části . V důsledku tohoINSERToperace dodefault()sloupců, pokudrequest-body-strictjetrue, nemohou vést k explicitnímnullhodnotám. K dosažení tohoto chováníUPDATEse vyžaduje operace. - Sloupce s
default()hodnotou datové části se neignorujíUPDATEbez 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).
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. |
Chování relativního vztahu dalšího propojení
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
}
}