Delen via


Runtime

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 path eigenschap.
  • Gebruik depth-limit dit om geneste query's te beperken.
  • Ingesteld allow-introspection om false het GraphQL-schema te verbergen.
  • Gebruik multiple-mutations dit 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 enabled het geval is false, maakt het niet uit op het niveau van enabled afzonderlijke entiteiten.
  • De path eigenschap biedt geen ondersteuning voor subpadwaarden zoals /api/data.
  • request-body-strict is 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 genegeerd INSERT wanneer hun waarde in de nettolading is null. Als gevolg hiervan INSERT kunnen bewerkingen in default() kolommen, wanneer request-body-strict dat wel is true, niet resulteren in expliciete null waarden. Om dit gedrag te bereiken, is een UPDATE bewerking vereist.
  • Kolommen met een default() kolom worden niet genegeerd, UPDATE ongeacht 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).

Diagram van JSON-webtokens ondersteunen in Data API Builder.

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.

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
  }
}