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 | null |
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ěť |
Nastavení telemetrie
| Property | Default | Description |
|---|---|---|
| runtime.telemetry.application-insights.connection-string | null |
Připojovací řetězec Application Insights |
| runtime.telemetry.application-insights.enabled | false |
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.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) |
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: "AppService"),
"jwt": {
"audience": "<string>",
"issuer": "<string>"
}
}
}
},
"cache": {
"enabled": <true>|<false> (default: `false`),
"ttl-seconds": <integer> (default: `5`)
},
"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`)
},
"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`)
}
}
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> (default) | <false>
}
}
}
}
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>
}
}
}
Note
Při nasazování Tvůrce rozhraní Data API pomocí static Web Apps (Preview) služba Azure automaticky vloží jinou dílčí cestu /data-api k adrese URL. Toto chování zajišťuje kompatibilitu se stávajícími funkcemi statické webové aplikace. Výsledný koncový bod by byl /data-api/api/<entity>. Tato poznámka je relevantní jenom pro Static Web Apps.
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 tomuUPDATEje potřeba provést operaci. - 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. Jedná se o funkci zabezpečení prohlížeče, která určuje, jestli webové stránky můžou vyhovět jiné doméně, 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> (default) | <false>,
"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 (AppServiceSimulator | | EntraId | Custom) |
❌ Ne | AppService |
Definuje metodu ověřování používanou tvůrcem rozhraní DATA API.
Pouze anonymní (zprostředkovatel ověřování)
{
"host": {
// omit the authentication section
}
}
Pokud se celý authentication oddíl ze souboru dab-config.json vynechá, nepoužije se žádný zprostředkovatel ověřování. V tomto případě tvůrce rozhraní DATA API funguje v režimu bez ověřování. V tomto režimu DAB nevyhledává žádné tokeny ani Authorization hlavičky. Hlavička X-MS-API-ROLE je v této konfiguraci ignorována.
[! Poznámka] Každý požadavek, který přichází do modulu, je automaticky a okamžitě přiřazena systémové role
anonymous. Řízení přístupu se pak zpracovává výhradně oprávněními, která definujete pro každou entitu.
Příklad oprávnění entity.
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{
"role": "anonymous",
"actions": [ "read" ]
}
]
}
}
}
V tomto příkladu se vzhledem k tomu, že není nakonfigurovaný žádný authentication zprostředkovatel, všechny příchozí požadavky se automaticky považují za uživatele anonymous . Pole permissions entity Book explicitně uděluje anonymous roli schopnost provádět read operace. Jakékoli pokusy o provedení jiných akcí (například create, update) deletenebo přístupu k jiným entitěm, které nejsou nakonfigurované pro anonymous přístup, se odepře.
StaticWebApps (auth provider) [zastaralé]
{
"host": {
"authentication": {
"provider": "StaticWebApps"
}
}
}
Tento poskytovatel je zastaralý, protože funkce Data Connections Static Web Apps ve verzi Preview byla vyřazena v listopadu 2025. I když zůstává funkční, byl navržen pro starší implementaci ověřování ve službě Azure Static Web Apps. Vývojáři by měli na poskytovatele migrovat AppService , aby měli lepší dlouhodobou podporu a konzistenci s širší platformou Azure Easy Auth.
[! Poznámka] Migrace není tak jednoduchá jako změna názvu zprostředkovatele v konfiguračním souboru. Poskytovatelé
StaticWebAppsočekávajíAppServicerůzné struktury JSON v hlavičcex-ms-client-principalpro zpracování rolí.
AppService (zprostředkovatel ověřování)
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
Tento poskytovatel je určený pro aplikace hostované ve službě Azure App Service, jako je Azure Container Apps. Hostitelské prostředí Azure zpracovává ověřování a pak předává informace o identitě uživatele do aplikace prostřednictvím hlaviček požadavků. Je určená pro vývojáře, kteří chtějí jednoduché, zastaralé řešení ověřování spravované platformou Azure.
Tento zprostředkovatel nepoužívá token JWT z hlavičky Authorization . Spoléhá na speciální hlavičku vloženou X-MS-CLIENT-PRINCIPALplatformou služby App Service. Tato hlavička obsahuje objekt JSON kódovaný v base64 s podrobnostmi o identitě uživatele.
Anonymní: Pokud AppService je poskytovatel nakonfigurovaný, ale požadavek přijde bez X-MS-CLIENT-PRINCIPAL hlavičky, požadavek se přiřadí systémové roli anonymous.
Dekódovaný JSON z X-MS-CLIENT-PRINCIPAL hlavičky obvykle vypadá takto:
{
"auth_typ": "aad",
"claims": [
{"typ": "roles", "val": "admin"},
{"typ": "roles", "val": "contributor"}
],
"name_typ": "...",
"role_typ": "..."
}
Role jsou obsaženy v claims poli.
O hlavičce X-MS-API-ROLE
-
Role a chování: Hlavička
X-MS-API-ROLEslouží k určení role, kterou chce uživatel pro aktuální požadavek předpokládat. Hodnota této hlavičky se musí shodovat s jednou z hodnot rolí nalezených vclaimspoli objektuX-MS-CLIENT-PRINCIPAL. -
Je to povinné?: Ne. Pokud hlavička
X-MS-API-ROLEchybí, požadavek se zpracuje v kontextuauthenticatedsystémové role. To znamená, že uživatel je rozpoznán jako přihlášený, ale ne jako žádná konkrétní role definovaná aplikací z tokenu. -
Chování při porovnávání: Pokud je hlavička
X-MS-API-ROLEzadaná a její hodnota odpovídá roli v objektu zabezpečeníclaimsklienta, uživatel předpokládá, že role pro požadavek. -
Chování při neshodě: Pokud je hlavička
X-MS-API-ROLEzadaná, ale hodnota neodpovídá žádné roli v objektu zabezpečení klienta, požadavek se odmítne se stavovým kódem403 Forbidden. Tím se zajistí, že uživatel nemůže deklarovat roli, kterou ještě nepřiřadil.
EntraId (zprostředkovatel ověřování)
{
"host": {
"authentication": {
"provider": "EntraId", // previously AzureAd
"jwt": {
"audience": "00001111-aaaa-2222-bbbb-3333cccc4444",
"issuer": "https://login.microsoftonline.com/98765f43-21ba-400c-a5de-1f2a3d4e5f6a/v2.0"
}
}
}
}
Tento zprostředkovatel zabezpečuje koncové body pomocí identit uživatelů a aplikací v Microsoft Entra. Je ideální pro jakoukoli službu, ve které uživatelé nebo jiné služby potřebují zabezpečený přístup v rámci tenanta Entra.
[! POZNÁMKA]
EntraIdZprostředkovatel byl dříve pojmenovánAzureAd. Starý název stále funguje, ale vývojářům se doporučuje migrovat své konfigurace zAzureAddoEntraId.
Tento poskytovatel očekává standardní token JWT Bearer v Authorization hlavičce vydané společností Microsoft Entra. Token musí být nakonfigurovaný pro konkrétní aplikaci (pomocí audience deklarace identity). Očekává se, že role uživatele nebo instančního objektu budou v deklaraci identity v tokenu. Kód ve výchozím nastavení hledá roles deklaraci identity.
Anonymní: Pokud EntraId je poskytovatel nakonfigurovaný, ale požadavek přijde bez Authorization hlavičky, požadavek se přiřadí systémové roli anonymous.
Dekódovaná datová část JWT může vypadat takto:
{
"aud": "...", // Audience - your API
"iss": "https://login.microsoftonline.com/{tenant-id}/v2.0", // Issuer
"oid": "...", // User or principal object ID
"roles": [
"reader",
"writer"
],
// ... other claims
}
O hlavičce X-MS-API-ROLE
-
Role a chování: Hlavička
X-MS-API-ROLEslouží k určení role, kterou chce uživatel pro požadavek předpokládat. Hodnota této hlavičky se musí shodovat s jednou z hodnot rolí nalezených vrolesdeklaraci tokenu JWT. -
Je to povinné?: Ne. Pokud hlavička
X-MS-API-ROLEchybí, požadavek se zpracuje v kontextuauthenticatedsystémové role. To znamená, že uživatel je rozpoznán jako přihlášený, ale ne jako žádná konkrétní role definovaná aplikací z tokenu. -
Chování při porovnávání: Pokud je hlavička
X-MS-API-ROLEzadaná a odpovídá roli vrolesdeklaraci identity, kontext uživatele se nastaví na tuto roli. -
Chování při neshodě: Pokud je hlavička
X-MS-API-ROLEzadaná, ale její hodnota neodpovídá žádné roli vrolesdeklaraci identity, požadavek se odmítne se stavovým kódem403 Forbidden. Tím se zajistí, že uživatel nemůže deklarovat roli, kterou ještě nepřiřadil.
Vlastní (zprostředkovatel ověřování)
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<client-id-or-api-audience>",
"issuer": "https://<your-domain>/oauth2/default"
}
}
}
}
Tento zprostředkovatel je určený pro vývojáře, kteří chtějí integrovat tvůrce rozhraní Data API se zprostředkovatelem identity třetí strany (například Auth0, Okta nebo vlastním serverem identity), který vydává JWT. Poskytuje flexibilitu při konfiguraci očekávaných audience tokenů a issuer tokenů.
Custom Zprostředkovatel očekává v Authorization hlavičce standardní token JWT Bearer. Klíčovým rozdílem od EntraId poskytovatele je, že nakonfigurujete platný issuer a audience v konfiguračním souboru tvůrce rozhraní Data API. Zprostředkovatel ověří token tím, že zkontroluje, jestli ho důvěryhodná autorita vydala. Očekává se, že role uživatele budou v roles deklarací identity v datové části JWT.
[! POZNÁMKA] V některých případech musí vývojáři v závislosti na zprostředkovateli identity třetí strany převést strukturu JWT tak, aby odpovídaly struktuře očekávané tvůrcem rozhraní Data API (viz níže).
Anonymní: Pokud Custom je poskytovatel nakonfigurovaný, ale požadavek přijde bez Authorization hlavičky, požadavek se přiřadí systémové roli anonymous.
Dekódovaná datová část JWT pro custom poskytovatele může vypadat takto:
{
"aud": "my-api-audience", // Must match configuration
"iss": "https://my-custom-issuer.com/", // Must match configuration
"sub": "user-id",
"roles": [
"editor",
"viewer"
],
// ... other claims
}
O hlavičce X-MS-API-ROLE
-
Role a chování: Hlavička
X-MS-API-ROLEfunguje přesně stejně jako uEntraIdzprostředkovatele. Umožňuje uživateli vybrat jednu ze svých přiřazených rolí. Hodnota této hlavičky musí odpovídat jedné z rolí zrolesdeklarace identity ve vlastním tokenu JWT. -
Je to povinné?: Ne. Pokud hlavička
X-MS-API-ROLEchybí, uživatel se považuje za roliauthenticatedsystému. -
Chování při porovnávání: Pokud
X-MS-API-ROLEhodnota hlavičky odpovídá roli v deklaraci identity JWTroles, kontext uživatele se nastaví na tuto roli pro účely autorizace. -
Chování při neshodě: Pokud
X-MS-API-ROLEhodnota hlavičky neodpovídá žádné roli vrolesdeklaraci identity, požadavek se odmítne se stavovým kódem403 Forbidden. Tím se zajistí, že uživatel nemůže deklarovat roli, kterou ještě nepřiřadil.
Simulátor (zprostředkovatel ověřování)
Tento poskytovatel je navržený tak, aby vývojářům usnadnil testování konfigurace, zejména authorization zásad, aniž by museli nastavovat úplného zprostředkovatele ověřování, jako je Entra Identity nebo EasyAuth. Simuluje authenticated uživatele.
Poskytovatel Simulator nepoužívá tokeny JWT. Ověřování se simuluje. Při použití tohoto poskytovatele se všechny požadavky považují za příchozí od ověřeného uživatele.
O hlavičce X-MS-API-ROLE
-
Role a chování: Záhlaví
X-MS-API-ROLEje jediný způsob, jak určit roli při použitíSimulator. Vzhledem k tomu, že neexistuje žádný token se seznamem rolí, systém implicitně důvěřuje roli poslané v této hlavičce. - Je to povinné?: Ne.
-
Chování při absenci: Pokud hlavička
X-MS-API-ROLEchybí, požadavek se zpracuje v kontextuauthenticatedsystémové role. -
Chování při přítomnosti: Pokud je hlavička
X-MS-API-ROLEpřítomná, požadavek se zpracuje v kontextu role zadané v hodnotě hlavičky. V seznamu deklarací identity není žádné ověření, takže vývojář může simulovat libovolnou roli, kterou potřebují k otestování zásad.
Simulátor v produkčním prostředí
Pokud je nastavená authentication.providerSimulator na dobu, runtime.host.mode která je productionnastavená, tvůrce rozhraní DATA API se nespustí.
"host": {
"mode": "production", // or "development"
"authentication": {
"provider": "Simulator"
}
}
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 | ❌ Ne | None |
runtime.host.authentication.jwt |
issuer |
řetězec | ❌ Ne | None |
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 {
...
}
}
}
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 |
Tip
Vlastnost na úrovni cache.ttl-seconds entity se ve výchozím nastavení nastaví na tuto globální hodnotu.
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>
}
}
}
Important
Pokud je enabledglobální false hodnota , na jednotlivých úrovních enabled entit nezáleží.
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 | - |
Konfiguruje úroveň podrobností protokolování pro každý obor názvů. To se řídí standardními konvencemi protokolování .NET a umožňuje podrobné řízení, i když předpokládá určitou znalost interních prvků Tvůrce rozhraní Data API. 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 | False |
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 nastavení. HTTP/protobuf (4318) je jednodušší a jednodušší ladit, ale méně efektivní.
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: 8 (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
}
}