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 | null |
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 |
Telemetrie-instellingen
| Property | Default | Description |
|---|---|---|
| runtime.telemetry.application-insights.connection-string | null |
Application Insights-verbindingsreeks |
| runtime.telemetry.application-insights.enabled | false |
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.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) |
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: "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`)
}
}
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> (default) | <false>
}
}
}
}
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> (default) | <false>,
"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 (AppServiceSimulator | | EntraId | Custom) |
❌ Nee | AppService |
Hiermee definieert u de verificatiemethode die wordt gebruikt door de Data API Builder.
Alleen anoniem (verificatieprovider)
{
"host": {
// omit the authentication section
}
}
Wanneer de hele authentication sectie wordt weggelaten uit het bestand dab-config.json, wordt er geen verificatieprovider gebruikt. In dit geval werkt Data API Builder in de modus 'no-auth'. In deze modus zoekt DAB niet naar tokens of Authorization headers. De X-MS-API-ROLE header wordt ook genegeerd in deze configuratie.
Note
Elke aanvraag die in de engine binnenkomt, wordt automatisch en onmiddellijk de systeemrol van anonymous. Toegangsbeheer wordt vervolgens uitsluitend verwerkt door de machtigingen die u voor elke entiteit definieert.
Een voorbeeld van entiteitsmachtigingen.
{
"entities": {
"Book": {
"source": "dbo.books",
"permissions": [
{
"role": "anonymous",
"actions": [ "read" ]
}
]
}
}
}
Omdat er in dit voorbeeld geen authentication provider is geconfigureerd, worden alle binnenkomende aanvragen automatisch beschouwd als van een anonymous gebruiker. De permissions matrix voor de Book entiteit verleent expliciet de rol de anonymous mogelijkheid om bewerkingen uit te voeren read . Pogingen om andere acties (zoals create, update, delete) uit te voeren of toegang te krijgen tot andere entiteiten die niet zijn geconfigureerd voor anonymous toegang, wordt geweigerd.
AppService (verificatieprovider)
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
Deze provider is bedoeld voor toepassingen die worden gehost in Azure App Service, zoals Azure Container Apps. De Azure-hostingomgeving verwerkt verificatie en geeft vervolgens de identiteitsgegevens van de gebruiker door aan de toepassing via aanvraagheaders. Het is bedoeld voor ontwikkelaars die een eenvoudige, standaardverificatieoplossing willen die wordt beheerd door het Azure-platform.
Deze provider gebruikt geen JWT-token uit de Authorization header. Het is afhankelijk van een speciale header, X-MS-CLIENT-PRINCIPALgeïnjecteerd door het App Service-platform. Deze header bevat een met base64 gecodeerd JSON-object met de identiteitsgegevens van de gebruiker.
Anoniem: Als de AppService provider is geconfigureerd maar een aanvraag binnenkomt zonder de X-MS-CLIENT-PRINCIPAL header, wordt de aanvraag toegewezen aan de systeemrol van anonymous.
De gedecodeerde JSON uit de X-MS-CLIENT-PRINCIPAL header ziet er doorgaans als volgt uit:
{
"auth_typ": "aad",
"claims": [
{"typ": "roles", "val": "admin"},
{"typ": "roles", "val": "contributor"}
],
"name_typ": "...",
"role_typ": "..."
}
De rollen bevinden zich in de claims matrix.
Over de X-MS-API-ROLE-header
-
Rol en gedrag: De
X-MS-API-ROLEheader wordt gebruikt om op te geven welke rol de gebruiker wil aannemen voor de huidige aanvraag. De waarde van deze header moet overeenkomen met een van de rolwaarden in declaimsmatrix van hetX-MS-CLIENT-PRINCIPALobject. -
Is het vereist?: Nee. Als de
X-MS-API-ROLEheader afwezig is, wordt de aanvraag verwerkt in de context van deauthenticatedsysteemrol. Dit gedrag betekent dat de gebruiker wordt herkend als aangemeld, maar niet als een specifieke toepassingsgedefinieerde rol van het token. -
Gedrag bij overeenkomst: als de header wordt opgegeven en de
X-MS-API-ROLEwaarde overeenkomt met een rol in de client-principalsclaims, neemt de gebruiker die rol voor de aanvraag aan. -
Gedrag bij niet-overeenkomende: als de
X-MS-API-ROLEheader wordt opgegeven, maar de waarde niet overeenkomt met een rol in de client-principal, wordt de aanvraag geweigerd met een403 Forbiddenstatuscode. Deze validatie zorgt ervoor dat een gebruiker geen rol kan claimen die niet is toegewezen.
EntraId (verificatieprovider)
{
"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"
}
}
}
}
Deze provider beveiligt eindpunten met gebruikers- en toepassingsidentiteiten in Microsoft Entra. Het is ideaal voor elke service waarbij gebruikers of andere services beveiligde toegang nodig hebben binnen de Entra-tenant.
Note
De provider had eerder de EntraId naam AzureAd. De oude naam werkt nog steeds, maar ontwikkelaars worden aangemoedigd om hun configuraties van AzureAd naar .EntraId
Deze provider verwacht een standaard JWT Bearer-token in de Authorization header, uitgegeven door Microsoft Entra. Het token moet worden geconfigureerd voor de specifieke toepassing (met behulp van de audience claim). De rollen voor de gebruiker of service-principal bevinden zich naar verwachting in een claim binnen het token. De code zoekt standaard naar een roles claim.
Anoniem: Als de EntraId provider is geconfigureerd maar een aanvraag binnenkomt zonder de Authorization header, wordt de aanvraag toegewezen aan de systeemrol van anonymous.
Een gedecodeerde JWT-nettolading kan er als volgt uitzien:
{
"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
}
Over de X-MS-API-ROLE-header
-
Rol en gedrag: De
X-MS-API-ROLEheader wordt gebruikt om een rol op te geven die de gebruiker voor de aanvraag wil aannemen. De waarde van deze header moet overeenkomen met een van de rolwaarden in derolesclaim van het JWT-token. -
Is het vereist?: Nee. Als de
X-MS-API-ROLEheader afwezig is, wordt de aanvraag verwerkt in de context van deauthenticatedsysteemrol. Dit gedrag betekent dat de gebruiker wordt herkend als aangemeld, maar niet als een specifieke toepassingsgedefinieerde rol van het token. -
Gedrag bij overeenkomst: als de
X-MS-API-ROLEheader wordt opgegeven en deze overeenkomt met een rol in derolesclaim, wordt de context van de gebruiker ingesteld op die rol. -
Gedrag bij niet-overeenkomende: als de
X-MS-API-ROLEheader wordt opgegeven, maar de waarde ervan niet overeenkomt met een rol in derolesclaim, wordt de aanvraag geweigerd met een403 Forbiddenstatuscode. Deze validatie zorgt ervoor dat een gebruiker geen rol kan claimen die niet is toegewezen.
Aangepast (verificatieprovider)
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<client-id-or-api-audience>",
"issuer": "https://<your-domain>/oauth2/default"
}
}
}
}
Deze provider is bedoeld voor ontwikkelaars die Data API Builder willen integreren met een externe id-provider (zoals Auth0, Okta of een aangepaste identiteitsserver) die JWT's uitgeeft. Het biedt de flexibiliteit om de verwachte audience en issuer van de tokens te configureren.
De Custom provider verwacht een standaard JWT Bearer-token in de Authorization header. Het belangrijkste verschil met de EntraId provider is dat u het geldige issuer en audience in het configuratiebestand van de Data API Builder configureert. De provider valideert het token door te controleren of de vertrouwde instantie het heeft uitgegeven. De rollen van de gebruiker bevinden zich naar verwachting in een roles claim binnen de JWT-nettolading.
Note
In sommige gevallen moeten ontwikkelaars, afhankelijk van de id-provider van derden, de structuur van hun JWT dwingen om overeen te komen met de structuur die door Data API Builder wordt verwacht (weergegeven in het volgende voorbeeld).
Anoniem: Als de Custom provider is geconfigureerd maar een aanvraag binnenkomt zonder de Authorization header, wordt de aanvraag toegewezen aan de systeemrol van anonymous.
Een gedecodeerde JWT-nettolading voor een custom provider kan er als volgt uitzien:
{
"aud": "my-api-audience", // Must match configuration
"iss": "https://my-custom-issuer.com/", // Must match configuration
"sub": "user-id",
"roles": [
"editor",
"viewer"
],
// ... other claims
}
Over de X-MS-API-ROLE-header
-
Rol en gedrag: de
X-MS-API-ROLEheaderfuncties werken precies zoals bij deEntraIdprovider. Hiermee kan de gebruiker een van de toegewezen rollen selecteren. De waarde van deze header moet overeenkomen met een van de rollen van derolesclaim in het aangepaste JWT-token. -
Is het vereist?: Nee. Als de
X-MS-API-ROLEheader afwezig is, wordt de gebruiker behandeld als deauthenticatedsysteemrol. -
Gedrag bij overeenkomst: als de waarde van de
X-MS-API-ROLEheader overeenkomt met een rol in de claim vanrolesde JWT, wordt de context van de gebruiker ingesteld op die rol voor autorisatiedoeleinden. -
Gedrag bij niet-overeenkomende waarden: als de waarde van de
X-MS-API-ROLEheader niet overeenkomt met een rol in derolesclaim, wordt de aanvraag geweigerd met een403 Forbiddenstatuscode. Deze validatie zorgt ervoor dat een gebruiker geen rol kan claimen die niet is toegewezen.
Simulator (verificatieprovider)
Deze provider is ontworpen om ontwikkelaars eenvoudig hun configuratie te testen, met name authorization beleidsregels, zonder dat ze een volledige verificatieprovider zoals Entra Identity of EasyAuth hoeven in te stellen. Hiermee wordt een authenticated gebruiker gesimuleerd.
De Simulator provider gebruikt geen JWT-tokens. Verificatie wordt gesimuleerd. Wanneer u deze provider gebruikt, behandelt Data API Builder alle aanvragen alsof deze afkomstig zijn van een geverifieerde gebruiker.
Over de X-MS-API-ROLE-header
-
Rol en gedrag: De
X-MS-API-ROLEkoptekst is de enige manier om een rol op te geven bij gebruik van deSimulator. Omdat er geen token is met een lijst met rollen, vertrouwt het systeem impliciet de rol die in deze header wordt verzonden. - Is het vereist?: Nee.
-
Gedrag bij afwezigheid: als de
X-MS-API-ROLEheader afwezig is, wordt de aanvraag verwerkt in de context van deauthenticatedsysteemrol. -
Gedrag bij aanwezigheid: als de header aanwezig is, wordt de
X-MS-API-ROLEaanvraag verwerkt in de context van de rol die is opgegeven in de waarde van de header. Er is geen validatie voor een claimslijst, zodat de ontwikkelaar elke rol kan simuleren die ze nodig hebben om hun beleid te testen.
Simulator in productie
Als de authentication.provider optie is ingesteld op Simulator de runtime.host.mode status production, kan data-API-opbouwfunctie niet worden gestart.
"host": {
"mode": "production", // or "development"
"authentication": {
"provider": "Simulator"
}
}
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 | ❌ Nee | None |
runtime.host.authentication.jwt |
issuer |
string | ❌ Nee | None |
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 {
...
}
}
}
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 |
Tip
De eigenschap op entiteitsniveau cache.ttl-seconds is standaard ingesteld op deze globale waarde.
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>
}
}
}
Important
Als globaal enabled het geval is false, maakt het niet uit op het niveau van enabled afzonderlijke entiteiten.
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 | - |
Hiermee configureert u de uitgebreide logboekregistratie per naamruimte. Dit volgt standaard .NET-logboekregistratieconventies en maakt gedetailleerde controle mogelijk, hoewel er wordt uitgegaan van enige bekendheid met interne gegevens-API-opbouwfuncties voor Data API. 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 | False |
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.
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: 1, Max: 8 (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
}
}