Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Configuratie-instellingen die het runtimegedrag bepalen.
Instellingen voor paginering
| Property | Default | Description |
|---|---|---|
| runtime.pagination.max-paginaformaat | Definieert maximumrecords per pagina | |
| runtime.pagtion.default-page-size | Hiermee stelt u standaardrecords per antwoord in |
REST-instellingen
| Property | Default | Description |
|---|---|---|
| runtime.rest.path | "/api" |
Basispad voor REST-eindpunten |
| runtime.rest.enabled | true |
Hiermee staat u het in- of uitschakelen van REST-aanvragen voor alle entiteiten toe |
| runtime.rest.request-body-strict | true |
Niet-overbodige velden in aanvraagtekst wanneer waar is |
GraphQL-instellingen
| Property | Default | Description |
|---|---|---|
| runtime.graphql.allow-introspection | true |
Hiermee kunt u query's uitvoeren op het onderliggende GraphQL-schema |
| runtime.graphql.path | "/graphql" |
Basispad voor het GraphQL-eindpunt |
| runtime.graphql.enabled | true |
Hiermee staat u het in- of uitschakelen van GraphQL-aanvragen voor alle entiteiten toe |
| runtime.graphql.depth-limit | null |
Maximale toegestane diepte van een GraphQL-query |
| runtime.graphql.multiple-mutaties.create.enabled | false |
Maakt meervoudige mutaties mogelijk voor alle entiteiten |
Hostinstellingen
| Property | Default | Description |
|---|---|---|
| runtime.host.max-response-size-mb | 158 |
Maximale grootte (MB) van het databaseantwoord dat is toegestaan in één resultaat |
| runtime.host.mode | "production" |
Actieve modus; "production" of "development" |
CORS-instellingen
| Property | Default | Description |
|---|---|---|
| runtime.host.cors.origins | [] |
Toegestane CORS-oorsprongen |
| runtime.host.cors.allow-credentials | false |
Hiermee stelt u de waarde in voor Access-Control-Allow-Credentials header |
Verificatie-instellingen
| Property | Default | Description |
|---|---|---|
| runtime.host.authentication.provider | Unauthenticated |
Verificatieprovider |
| runtime.host.authentication.jwt.audience | null |
JWT-doelgroep |
| runtime.host.authentication.jwt.issuer | null |
JWT-uitgever |
Cache-instellingen
| Property | Default | Description |
|---|---|---|
| runtime.cache.enabled | false |
Hiermee schakelt u het opslaan van antwoorden globaal in de cache in |
| runtime.cache.ttl-seconds | 5 |
Time to live (seconden) voor globale cache |
| runtime.cache.level-2.enabled | false |
Maakt gedistribueerde cache op niveau 2 wereldwijd mogelijk |
| runtime.cache.level-2.provider | "redis" |
Gedistribueerde cacheprovider voor cache op niveau 2 |
| runtime.cache.level-2.connection-string | null |
Verbindingsreeks voor de cacheprovider op niveau 2 |
| runtime.cache.level-2.partition | null |
Optionele partitienaam voor het isoleren van gedistribueerde cacheruimte |
Compressie-instellingen
| Property | Default | Description |
|---|---|---|
| runtime.compression.level | optimal |
HTTP-antwoordcompressieniveau (optimal, fastestof none) |
Telemetrie-instellingen
| Property | Default | Description |
|---|---|---|
| runtime.telemetry.application-insights.connection-string | null |
Application Insights-verbindingsreeks |
| runtime.telemetry.application-insights.enabled | true |
Application Insights-telemetrie in- of uitschakelen |
| runtime.telemetry.open-telemetry.endpoint | null |
Url van openTelemetry-collector |
| runtime.telemetry.open-telemetry.headers | {} |
OpenTelemetry-exportheaders |
| runtime.telemetry.open-telemetry.service-name | "dab" |
OpenTelemetry-servicenaam |
| runtime.telemetry.open-telemetry.exporter-protocol | "grpc" |
OpenTelemetry-protocol ('grpc' of 'httpprotobuf') |
| runtime.telemetry.open-telemetry.enabled | true |
OpenTelemetry in- of uitschakelen |
| runtime.telemetry.open-telemetry.enabled | true |
OpenTelemetry in- of uitschakelen |
| runtime.telemetry.azure-log-analytics.enabled | false |
Azure Log Analytics in- of uitschakelen |
| runtime.telemetry.azure-log-analytics.dab-identifier | "DabLogs" |
Id voor DAB in Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.flush-interval-seconds | 5 |
Interval tussen batch-pushes van logboeken (seconden) |
| runtime.telemetry.azure-log-analytics.auth.custom-table-name | null |
Aangepaste tabelnaam voor Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id | null |
Onveranderbare id van regel voor gegevensverzameling |
| runtime.telemetry.azure-log-analytics.auth.dce-endpoint | null |
Eindpunt-URL voor gegevensverzameling |
| runtime.telemetry.file.enabled | false |
Logboekregistratie van bestandssink in- of uitschakelen |
| runtime.telemetry.file.path | "/logs/dab-log.txt" |
Bestandspad voor telemetrielogboeken |
| runtime.telemetry.file.rolling-interval | "Day" |
Rolling interval voor logboekbestanden |
| runtime.telemetry.file.retained-file-count-limit | 1 |
Maximum aantal bewaarde logboekbestanden |
| runtime.telemetry.file.file-size-limit-bytes | 1048576 |
Maximale bestandsgrootte in bytes voordat deze wordt gerold |
| runtime.telemetry.log-level.namespace | null |
Naamruimtespecifieke overschrijving op logboekniveau |
| runtime.health.enabled | true |
Hiermee schakelt u het eindpunt van de statuscontrole globaal in of uit |
| runtime.health.roles | null |
Toegestane rollen voor het uitgebreide statuseindpunt |
| runtime.health.cache-ttl-seconds | 5 |
Time to live (seconden) voor de cachevermelding voor statuscontrolerapport |
| runtime.health.max-queryparallelisme | 4 |
Maximum aantal query's voor gelijktijdige statuscontrole (bereik: 1-8) |
MCP-instellingen
| Property | Default | Description |
|---|---|---|
| runtime.mcp.enabled | true |
Hiermee schakelt u het MCP-eindpunt globaal in of uit |
| runtime.mcp.path | "/mcp" |
Basispad voor het MCP-eindpunt |
| runtime.mcp.description | null |
Serverbeschrijving verzonden naar MCP-clients tijdens initialisatie |
| runtime.mcp.dml-tools | true |
Hiermee schakelt u alle DML-hulpprogramma's of een object voor besturingselement per hulpprogramma in of uit |
| runtime.mcp.dml-tools.describe-entities | true |
Hiermee schakelt u het hulpprogramma describe_entities in |
| runtime.mcp.dml-tools.create-record | true |
Hiermee schakelt u het hulpprogramma create_record in |
| runtime.mcp.dml-tools.read-records | true |
Hiermee schakelt u het hulpprogramma read_records in |
| runtime.mcp.dml-tools.update-record | true |
Hiermee schakelt u het hulpprogramma update_record in |
| runtime.mcp.dml-tools.delete-record | true |
Hiermee schakelt u het hulpprogramma delete_record in |
| runtime.mcp.dml-tools.execute-entity | true |
Hiermee schakelt u het hulpprogramma execute_entity in |
| runtime.mcp.dml-tools.aggregate-records | true |
Hiermee schakelt u het hulpprogramma aggregate_records (booleaanse waarde of object met time-out van query's) in |
Overzicht van opmaak
{
"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`)
}
}
}
}
}
Modus (hostruntime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
host |
enum (production | development) |
❌ Nee | production |
Ontwikkelingsgedrag
- Nitro (voorheen Banana Cake Pop) ingeschakeld voor GraphQL-tests
- Swagger UI ingeschakeld voor REST-tests
- Anonieme statuscontroles ingeschakeld
- Uitgebreide logboekregistratie (foutopsporing)
Format
{
"runtime": {
"host": {
"mode": "production" (default) | "development"
}
}
}
Maximale antwoordgrootte (hostruntime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
max-response-size-mb |
integer | ❌ Nee | 158 |
Hiermee stelt u de maximale grootte (in megabytes) in voor elk gegeven resultaat. Omdat grote reacties het systeem kunnen belasten, max-response-size-mb wordt de totale grootte (afgezien van het aantal rijen) om overbelasting te voorkomen, wat vooral geldt voor grote kolommen, zoals tekst of JSON.
| Value | Result |
|---|---|
| niet ingesteld | Standaard gebruiken |
null |
Standaard gebruiken |
integer |
Een positief 32-bits geheel getal |
<= 0 |
Niet ondersteund |
Format
{
"runtime": {
"host": {
"max-response-size-mb": <integer; default: 158>
}
}
}
GraphQL (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
graphql |
object | ❌ Nee | - |
Globale GraphQL-configuratie.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.graphql |
enabled |
boolean | ❌ Nee | None |
runtime.graphql |
path |
string | ❌ Nee | "/graphql" |
runtime.graphql |
depth-limit |
integer | ❌ Nee | Geen (onbeperkt) |
runtime.graphql |
allow-introspection |
boolean | ❌ Nee | True |
runtime.graphql |
multiple-mutations.create.enabled |
boolean | ❌ Nee | False |
Opmerkingen bij eigenschappen
- Subpaden zijn niet toegestaan voor de
patheigenschap. - Gebruik
depth-limitdit om geneste query's te beperken. - Ingesteld
allow-introspectionomfalsehet GraphQL-schema te verbergen. - Gebruik
multiple-mutationsdit om meerdere entiteiten in één mutatie in te voegen.
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)
}
}
}
}
}
Voorbeeld: meerdere mutaties
Configuration
{
"runtime": {
"graphql": {
"multiple-mutations": {
"create": {
"enabled": true
}
}
}
},
"entities": {
"User": {
"source": "dbo.Users",
"permissions": [
{
"role": "anonymous",
"actions": ["create"] // entity permissions are required
}
]
}
}
}
GraphQL mutatie
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 (uitvoeringstijd)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
rest |
object | ❌ Nee | - |
Globale REST-configuratie.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.rest |
enabled |
boolean | ❌ Nee | None |
runtime.rest |
path |
string | ❌ Nee | "/api" |
runtime.rest |
request-body-strict |
boolean | ❌ Nee | True |
Opmerkingen bij eigenschappen
- Als globaal
enabledhet geval isfalse, maakt het niet uit op het niveau vanenabledafzonderlijke entiteiten. - De
patheigenschap biedt geen ondersteuning voor subpadwaarden zoals/api/data. -
request-body-strictis geïntroduceerd om .NET POCO-objecten te vereenvoudigen.
request-body-strict |
Behavior |
|---|---|
true |
Extra velden in de hoofdtekst van de aanvraag veroorzaken een BadRequest uitzondering. |
false |
Extra velden in de hoofdtekst van de aanvraag worden genegeerd. |
Format
{
"runtime": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string> (default: /api),
"request-body-strict": <true> (default) | <false>
}
}
}
Voorbeeld: aanvraag-body-strict
- Kolommen met een
default()waarde worden alleen genegeerdINSERTwanneer hun waarde in de nettolading isnull. Als gevolg hiervanINSERTkunnen bewerkingen indefault()kolommen, wanneerrequest-body-strictdat wel istrue, niet resulteren in explicietenullwaarden. Om dit gedrag te bereiken, is eenUPDATEbewerking vereist. - Kolommen met een
default()kolom worden niet genegeerd,UPDATEongeacht de nettoladingwaarde. - Berekende kolommen worden altijd genegeerd.
- Automatisch gegenereerde kolommen worden altijd genegeerd.
Voorbeeldtabel
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
);
Nettolading aanvragen
{
"Id": 999,
"Name": "Alice",
"Age": null,
"IsAdmin": null,
"IsMinor": false,
"ExtraField": "ignored"
}
Gedrag invoegen wanneer 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.
Antwoordlading
{
"Id": 1, // Auto-generated by the database
"Name": "Alice",
"Age": 18, // Default applied
"IsAdmin": false, // Default applied
"IsMinor": true // Computed
}
Gedrag bijwerken wanneer request-body-strict = false
UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.
Antwoordlading
{
"Id": 1,
"Name": "Alice Updated",
"Age": null,
"IsAdmin": false,
"IsMinor": false // Recomputed by the database (false when age is `null`)
}
CORS (hostruntime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
cors |
object | ❌ Nee | - |
Globale CORS-configuratie.
Tip
CORS staat voor Cross-Origin Resource Sharing. Het is een browserbeveiligingsfunctie waarmee wordt bepaald of webpagina's aanvragen kunnen indienen bij een ander domein dan het domein dat ze heeft geleverd.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.cors |
allow-credentials |
boolean | ❌ Nee | False |
runtime.host.cors |
origins |
tekenreeksmatrix | ❌ Nee | None |
Note
De allow-credentials eigenschap stelt de Access-Control-Allow-Credentials CORS-header in.
Format
{
"runtime": {
"host": {
"cors": {
"allow-credentials": <true> | <false> (default),
"origins": ["<array-of-strings>"]
}
}
}
}
Note
Het jokerteken * is geldig als een waarde voor origins.
Provider (verificatiehostruntime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
provider |
enum (UnauthenticatedSimulator | Custom | | | EntraId | StaticWebAppsAppService) |
❌ Nee | Unauthenticated |
Selecteert de verificatiemethode. Elke provider valideert de identiteit anders. Zie de instructiegidsen in de volgende tabel voor stapsgewijze instellingen.
Note
De data-API builder 2.0-functionaliteit die in deze sectie wordt beschreven, is momenteel in preview en kan veranderen vóór algemene beschikbaarheid. Zie Wat is er nieuw in versie 2.0 voor meer informatie.
Providersamenvatting
| Provider | Gebruiksituatie | Identiteitsbron | Instructiegids |
|---|---|---|---|
Unauthenticated |
DAB bevindt zich achter een vertrouwde front-end (standaard) | Geen: alle aanvragen worden uitgevoerd als anonymous |
De niet-geverifieerde provider configureren |
AppService |
Door Azure gehoste apps (EasyAuth) |
X-MS-CLIENT-PRINCIPAL Header |
App Service-verificatie configureren |
EntraID |
Microsoft Entra ID (Azure AD) | JWT bearer-token | Entra-ID-verificatie configureren |
Custom |
IdPs van derden (Okta, Auth0) | JWT bearer-token | Aangepaste JWT-verificatie configureren |
Simulator |
Alleen lokaal testen | Gesimuleerd | Simulatorverificatie configureren |
Note
De provider had eerder de EntraId naam AzureAd. De oude naam werkt nog steeds voor compatibiliteit.
Niet-geverifieerd (standaard)
Wanneer Unauthenticated is ingesteld (of er geen provider is opgegeven), inspecteert of valideert DAB geen JWT. Alle aanvragen worden uitgevoerd als de anonymous rol. Een front-endservice zoals Azure API Management of een toepassingsgateway kan nog steeds verificatie- of toegangsbeleid verwerken voordat aanvragen DAB bereiken, maar DAB blijft alleen autoriseren als anonymous.
Important
Wanneer Unauthenticated actief is en authenticated aangepaste rollen die zijn gedefinieerd in entiteitsmachtigingen, worden nooit geactiveerd. Als uw configuratie deze rollen bevat, verzendt DAB een waarschuwing bij het opstarten.
{
"host": {
"authentication": {
"provider": "Unauthenticated"
}
}
}
AppService
Vertrouwt identiteitsheaders die zijn geïnjecteerd door Azure App Service EasyAuth.
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
EntraID
Valideert JWT-tokens die zijn uitgegeven door Microsoft Entra ID.
{
"host": {
"authentication": {
"provider": "EntraId",
"jwt": {
"audience": "<application-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
Op maat gemaakt
Valideert JWT-tokens van externe id-providers.
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<api-audience>",
"issuer": "https://<your-idp-domain>/"
}
}
}
}
Simulator
Simuleert verificatie voor lokale ontwikkeling en testen.
{
"host": {
"authentication": {
"provider": "Simulator"
}
}
}
Important
De Simulator provider werkt alleen wanneer runtime.host.mode dit is development. DAB kan niet worden gestart als Simulator is geconfigureerd in de productiemodus.
Rolselectie
Voor alle providers behalve Simulator selecteert de X-MS-API-ROLE header welke rol moet worden gebruikt van de claims van de geverifieerde gebruiker. Als u dit weglaat, gebruikt de aanvraag de Authenticated systeemrol. Zie Het overzicht van autorisatie voor meer informatie over rolevaluatie.
JWT (Runtime van verificatiehost)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
jwt |
object | ❌ Nee | - |
Algemene JSON-webtokenconfiguratie (JWT).
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication.jwt |
audience |
string | ✔️ Ja* | None |
runtime.host.authentication.jwt |
issuer |
string | ✔️ Ja* | None |
* Beide audience en issuer zijn vereist wanneer het jwt object aanwezig is. Het jwt object zelf is vereist wanneer de provider , EntraIDAzureADof Custom.
Format
{
"runtime": {
"host": {
"authentication": {
"jwt": {
"audience": "<client-id>",
"issuer": "<issuer-url>"
}
}
}
}
}
Paginering (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
pagination |
object | ❌ Nee | - |
Globale pagineringslimieten voor REST- en GraphQL-eindpunten.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.pagination |
max-page-size |
int | ❌ Nee | 100,000 |
runtime.pagination |
default-page-size |
int | ❌ Nee | 100 |
runtime.pagination |
next-link-relative |
boolean | ❌ Nee | false |
Ondersteunde waarden voor maximale paginagrootte
| Value | Result |
|---|---|
integer |
Elk positief 32-bits geheel getal wordt ondersteund. |
0 |
Wordt niet ondersteund. |
-1 |
De standaardwaarde wordt ingesteld op de maximaal ondersteunde waarde. |
< -1 |
Wordt niet ondersteund. |
Ondersteunde waarden voor standaardpaginagrootte
| Value | Result |
|---|---|
integer |
Een positief geheel getal kleiner dan de huidige max-page-size. |
0 |
Wordt niet ondersteund. |
-1 |
De standaardinstelling is ingesteld op de huidige max-page-size. |
< -1 |
Wordt niet ondersteund. |
Next-link-relative behavior
Wanneer next-link-relative gebruiken truepagineringswaarden nextLink relatieve URL's in plaats van absolute URL's.
| Value | Example |
|---|---|
false (standaard) |
"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
Wanneer de waarde groter is dan max-page-size, worden de resultaten beperkt tot max-page-size.
Voorbeeld: Paging in REST
Request
GET https://localhost:5001/api/users
Antwoordlading
{
"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=="
}
Volgende pagina aanvragen
GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==
Voorbeeld: Paging in GraphQL
Nettolading aanvragen (query)
query {
users {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Antwoordlading
{
"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=="
}
}
}
Volgende pagina aanvragen
query {
users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Voorbeeld: Toegang max-page-size tot aanvragen
Gebruik de max-page-size waarde door (REST) of $limit (GraphQL) in te stellen first op -1.
REST
GET https://localhost:5001/api/users?$limit=-1
GraphQL
query {
users(first: -1) {
items {
...
}
}
}
Compressie (runtime)
Note
De data-API builder 2.0-functionaliteit die in deze sectie wordt beschreven, is momenteel in preview en kan veranderen vóór algemene beschikbaarheid. Zie Wat is er nieuw in versie 2.0 voor meer informatie.
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
compression |
object | ❌ Nee | - |
Configuratie van HTTP-antwoordcompressie. Wanneer deze functie is ingeschakeld, comprimeert DAB antwoordteksten om nettoladinggrootten te verminderen en de overdrachtssnelheden te verbeteren.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.compression |
level |
string | ❌ Nee | "optimal" |
Ondersteunde waarden voor level
| Value | Description | Compressiebesparingen | Invloed op de prestaties |
|---|---|---|---|
optimal |
Verhouding en snelheid van balansen (standaard) | Gzip: 90,5% / Brotli: 92.2% | Gemiddeld CPU-gebruik, lichte latentieverhoging |
fastest |
Prioriteit geeft aan snelheid boven verhouding | Gzip: 89.8% / Brotli: 91.1% | Laag CPU-gebruik, minimale latentie |
none |
Geen compressie | 0% (basislijn: 12.673 bytes) | None |
HTTP-headers van client
Compressie wordt aangeroepen door de header van Accept-Encoding de client. Ondersteunde algoritmen zijn Gzip en Brotli. De level instelling configureert de compressiestrategie wanneer zowel de client als de server meerdere algoritmen ondersteunen.
Ondersteunde headers
| HTTP-header | Gebruikte algoritme |
|---|---|
Accept-Encoding: gzip |
Gzip |
Accept-Encoding: br |
Brotli |
Format
{
"runtime": {
"compression": {
"level": <"optimal"> (default) | <"fastest"> | <"none">
}
}
}
Example
{
"runtime": {
"compression": {
"level": "optimal"
}
}
}
Cache (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
cache |
object | ❌ Nee | - |
Globale cacheconfiguratie.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache |
enabled |
boolean | ❌ Nee | False |
runtime.cache |
ttl-seconds |
integer | ❌ Nee | 5 |
runtime.cache |
level-2 |
object | ❌ Nee | - |
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache.level-2 |
enabled |
boolean | ❌ Nee | False |
runtime.cache.level-2 |
provider |
string | ❌ Nee | redis |
runtime.cache.level-2 |
connection-string |
string | ❌ Nee | None |
runtime.cache.level-2 |
partition |
string | ❌ Nee | None |
Tip
De eigenschap op entiteitsniveau cache.ttl-seconds is standaard ingesteld op deze globale waarde.
Tip
Zie Cache op niveau 2 implementeren voor end-to-end-installatie, gedrag op cacheniveau en Redis-voorbeelden.
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>,
"level-2": {
"enabled": <boolean>,
"provider": "redis",
"connection-string": <string>,
"partition": <string>
}
}
}
}
Important
Als globaal enabled het geval is false, maakt het niet uit op het niveau van enabled afzonderlijke entiteiten.
Wanneer level-2.enabled is true, gebruikt DAB de geconfigureerde gedistribueerde cacheprovider naast de lokale cache in het geheugen. Een entiteit die is geconfigureerd met cacheniveau L1L2 controleert eerst de lokale cache en vervolgens gedistribueerde cache voordat u naar de database gaat.
Telemetrie (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
telemetry |
object | ❌ Nee | - |
Globale telemetrieconfiguratie.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
log-level |
dictionary | ❌ Nee | None |
runtime.telemetry |
application-insights |
object | ❌ Nee | - |
runtime.telemetry |
open-telemetry |
object | ❌ Nee | - |
runtime.telemetry |
azure-log-analytics |
object | ❌ Nee | - |
runtime.telemetry |
file |
object | ❌ Nee | - |
Hiermee configureert u de uitgebreide logboekregistratie per naamruimte. Deze configuratie volgt standaard .NET-logboekregistratieconventies en maakt gedetailleerde controle mogelijk, hoewel er wordt uitgegaan van enige bekendheid met interne gegevens van Data API Builder. Data API Builder is open source: https://aka.ms/dab
Format
{
"runtime": {
"telemetry": {
"log-level": {
"namespace": "log-level",
"namespace": "log-level"
}
}
}
}
Tip
log-level kan dynamisch opnieuw worden geladen in zowel ontwikkeling als productie. Dit is momenteel de enige eigenschap die ondersteuning biedt voor het opnieuw laden van hotloads in productie.
Example
{
"runtime": {
"telemetry": {
"log-level": {
"Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
"Azure.DataApiBuilder.Core": "information",
"default": "warning"
}
}
}
}
Application Insights (telemetrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
application-insights |
object | ❌ Nee | - |
Hiermee configureert u logboekregistratie voor Application Insights.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.application-insights |
enabled |
boolean | ❌ Nee | true |
runtime.telemetry.application-insights |
connection-string |
string | ✔️ Ja | None |
Format
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": <true; default: true> | <false>
"connection-string": <string>
}
}
}
}
OpenTelemetry (telemetrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
open-telemetry |
object | ❌ Nee | - |
Hiermee configureert u logboekregistratie voor het openen van telemetrie.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.open-telemetry |
enabled |
boolean | ❌ Nee | true |
runtime.telemetry.open-telemetry |
endpoint |
string | ✔️ Ja | None |
runtime.telemetry.open-telemetry |
headers |
string | ❌ Nee | None |
runtime.telemetry.open-telemetry |
service-name |
string | ❌ Nee | "dab" |
runtime.telemetry.open-telemetry |
exporter-protocol |
enum (grpc | httpprotobuf) |
❌ Nee | grpc |
Meerdere kopteksten worden , gescheiden (komma's).
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",
}
}
}
}
Meer informatie over OTEL_EXPORTER_OTLP_HEADERS.
Note
gRPC (4317) is sneller en ondersteunt streaming, maar vereist meer installatiestappen. HTTP/protobuf (4318) is eenvoudiger en eenvoudiger om fouten op te sporen, maar minder efficiënt.
Azure Log Analytics (telemetrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
azure-log-analytics |
object | ❌ Nee | - |
Hiermee configureert u logboekregistratie naar Azure Log Analytics via een eindpunt voor gegevensverzameling. Indien ingeschakeld, verzendt DAB telemetriegegevens in batches met een configureerbaar interval.
Note
De data-API builder 2.0-functionaliteit die in deze sectie wordt beschreven, is momenteel in preview en kan veranderen vóór algemene beschikbaarheid. Zie Wat is er nieuw in versie 2.0 voor meer informatie.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics |
enabled |
boolean | ❌ Nee | false |
runtime.telemetry.azure-log-analytics |
dab-identifier |
string | ❌ Nee | "DabLogs" |
runtime.telemetry.azure-log-analytics |
flush-interval-seconds |
integer | ❌ Nee | 5 |
runtime.telemetry.azure-log-analytics |
auth |
object | ✔️ Ja* | - |
*
authis vereist wanneer enabled .true
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics.auth |
custom-table-name |
string | ✔️ Ja* | null |
runtime.telemetry.azure-log-analytics.auth |
dcr-immutable-id |
string | ✔️ Ja* | null |
runtime.telemetry.azure-log-analytics.auth |
dce-endpoint |
string | ✔️ Ja* | null |
* Vereist wanneer enabled is true.
-
dab-identifier— een label dat is doorgegeven aan Log Analytics om te helpen onderscheiden welke logboeken afkomstig zijn van data-API builder. -
flush-interval-seconds— het tijdsinterval (in seconden) tussen het verzenden van batches telemetriegegevens. -
custom-table-name— de naam van de aangepaste tabel in Azure Log Analytics waar gegevens worden opgeslagen. -
dcr-immutable-id— de onveranderbare id van de regel voor gegevensverzameling die definieert hoe gegevens worden verzameld. -
dce-endpoint— de eindpunt-URL voor gegevensverzameling die wordt gebruikt voor het verzenden van telemetriegegevens.
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"
}
}
}
}
}
Bestand (telemetrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
file |
object | ❌ Nee | - |
Hiermee configureert u het schrijven van telemetrielogboeken naar een lokaal bestand. Indien ingeschakeld, schrijft DAB gestructureerde logboekuitvoer naar het opgegeven bestandspad met configureerbare rolling intervallen en groottelimieten.
Note
De data-API builder 2.0-functionaliteit die in deze sectie wordt beschreven, is momenteel in preview en kan veranderen vóór algemene beschikbaarheid. Zie Wat is er nieuw in versie 2.0 voor meer informatie.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.file |
enabled |
boolean | ❌ Nee | false |
runtime.telemetry.file |
path |
string | ✔️ Ja* | "/logs/dab-log.txt" |
runtime.telemetry.file |
rolling-interval |
enum | ❌ Nee | "Day" |
runtime.telemetry.file |
retained-file-count-limit |
integer | ❌ Nee | 1 |
runtime.telemetry.file |
file-size-limit-bytes |
integer | ❌ Nee | 1048576 |
*
pathis vereist wanneer enabled .true
Waarden voor rollend interval
| Value | Description |
|---|---|
Minute |
Nieuw logboekbestand elke minuut |
Hour |
Elk uur nieuw logboekbestand |
Day |
Nieuw logboekbestand elke dag (standaard) |
Month |
Nieuw logboekbestand elke maand |
Year |
Nieuw logboekbestand elk jaar |
Infinite |
Nooit naar een nieuw bestand rollen |
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 (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
mcp |
object | ❌ Nee | - |
Hiermee configureert u de MCP-server (SQL Model Context Protocol), die database-entiteiten beschikbaar maakt als MCP-hulpprogramma's voor AI-agents.
Note
De data-API builder 2.0-functionaliteit die in deze sectie wordt beschreven, is momenteel in preview en kan veranderen vóór algemene beschikbaarheid. Zie Wat is er nieuw in versie 2.0 voor meer informatie.
Geneste eigenschappen
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.mcp |
enabled |
boolean | ❌ Nee | true |
runtime.mcp |
path |
string | ❌ Nee | "/mcp" |
runtime.mcp |
description |
string | ❌ Nee | null |
runtime.mcp |
dml-tools |
Booleaanse waarde of object | ❌ Nee | true |
De dml-tools eigenschap accepteert een Booleaanse waarde om alle hulpprogramma's in of uit te schakelen, of een object om afzonderlijke hulpprogramma's te beheren:
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.mcp.dml-tools |
describe-entities |
boolean | ❌ Nee | true |
runtime.mcp.dml-tools |
create-record |
boolean | ❌ Nee | true |
runtime.mcp.dml-tools |
read-records |
boolean | ❌ Nee | true |
runtime.mcp.dml-tools |
update-record |
boolean | ❌ Nee | true |
runtime.mcp.dml-tools |
delete-record |
boolean | ❌ Nee | true |
runtime.mcp.dml-tools |
execute-entity |
boolean | ❌ Nee | true |
runtime.mcp.dml-tools |
aggregate-records |
Booleaanse waarde of object | ❌ Nee | true |
Het aggregate-records hulpprogramma accepteert een Booleaanse waarde of een object met meer instellingen:
| Parent | Property | Type | Required | Default | Bereik |
|---|---|---|---|---|---|
runtime.mcp.dml-tools.aggregate-records |
enabled |
boolean | ❌ Nee | true |
|
runtime.mcp.dml-tools.aggregate-records |
query-timeout |
integer | ❌ Nee | 30 |
1-600 seconden |
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
}
}
}
}
}
Als u alle DML-hulpprogramma's tegelijk wilt in- of uitschakelen, stelt u dit in "dml-tools" op true of false.
Wanneer u een hulpprogramma uitschakelt op runtimeniveau, wordt het hulpprogramma nooit weergegeven in het MCP-antwoord tools/list en kan het niet worden aangeroepen, ongeacht machtigingen op entiteitsniveau. Zie DML-hulpprogramma's (Data Manipulat Language) voor meer informatie over afzonderlijke DML-hulpprogramma's.
De CLI gebruiken
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
Status (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
health |
object | ❌ Nee | - |
Globale configuratie van statuscontrole-eindpunt (/health).
Geneste eigenschappen
| Parent | Property | Type | Required | Default | Bereik/notities |
|---|---|---|---|---|---|
runtime.health |
enabled |
boolean | ❌ Nee | true |
|
runtime.health |
roles |
tekenreeksmatrix | ✔️ Ja* | null |
*Vereist in productiemodus |
runtime.health |
cache-ttl-seconds |
integer | ❌ Nee | 5 |
Min. 0 |
runtime.health |
max-query-parallelism |
integer | ❌ Nee | 4 |
Min: Eén, Max: Acht (klem) |
Gedrag in ontwikkeling versus productie
| Condition | Ontwikkelingsgedrag | Productiegedrag |
|---|---|---|
health.enabled = onwaar |
403 Status |
403 Status |
health.enabled = waar |
Afhankelijk van rol | Afhankelijk van rol |
roles weggelaten of null |
Status weergegeven |
403 Status |
huidige rol niet in roles |
403 Status |
403 Status |
huidige rol in roles |
Status weergegeven | Status weergegeven |
roles Bevat anonymous |
Status weergegeven | Status weergegeven |
Format
{
"health": {
"enabled": <true> (default) | <false>,
"roles": [ <string> ], // required in production
"cache-ttl-seconds": <integer; default: 5>,
"max-query-parallelism": <integer; default: 4>
}
}
Note
Als globaal enabled het geval is false, maakt het niet uit op het niveau van enabled afzonderlijke entiteiten.
Example
{
"health": {
"enabled": true,
"roles": ["admin", "support"],
"cache-ttl-seconds": 10,
"max-query-parallelism": 6
}
}