Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Paramètres de configuration qui déterminent le comportement d’exécution.
Paramètres de pagination
| Property | Default | Description |
|---|---|---|
| runtime.pagination.max-page-size | Définit le nombre maximal d’enregistrements par page | |
| runtime.pagination.default-page-size | Définit les enregistrements par défaut par réponse |
Paramètres REST
| Property | Default | Description |
|---|---|---|
| runtime.rest.path | "/api" |
Chemin d’accès de base pour les points de terminaison REST |
| runtime.rest.enabled | true |
Autorise l’activation ou la désactivation des requêtes REST pour toutes les entités |
| runtime.rest.request-body-strict | true |
Interdit les champs superflus dans le corps de la demande quand la valeur est true |
Paramètres GraphQL
| Property | Default | Description |
|---|---|---|
| runtime.graphql.allow-introspection | true |
Permet l’interrogation du schéma GraphQL sous-jacent |
| runtime.graphql.path | "/graphql" |
Chemin d’accès de base pour le point de terminaison GraphQL |
| runtime.graphql.enabled | true |
Autorise l’activation ou la désactivation des requêtes GraphQL pour toutes les entités |
| runtime.graphql.depth-limit | null |
Profondeur maximale autorisée d’une requête GraphQL |
| runtime.graphql.multiple-mutations.create.enabled | false |
Permet de créer plusieurs mutations pour toutes les entités |
Paramètres de l’hôte
| Property | Default | Description |
|---|---|---|
| runtime.host.max-response-size-mb | 158 |
Taille maximale (Mo) de la réponse de base de données autorisée dans un résultat unique |
| runtime.host.mode | "production" |
Mode en cours d’exécution ; "production" ou "development" |
Paramètres CORS
| Property | Default | Description |
|---|---|---|
| runtime.host.cors.origins | [] |
Origines CORS autorisées |
| runtime.host.cors.allow-credentials | false |
Définit la valeur de l’en-tête Access-Control-Allow-Credentials |
Paramètres d’authentification
| Property | Default | Description |
|---|---|---|
| runtime.host.authentication.provider | Unauthenticated |
Fournisseur d’authentification |
| runtime.host.authentication.jwt.audience | null |
Audience JWT |
| runtime.host.authentication.jwt.issuer | null |
Émetteur JWT |
Paramètres du cache
| Property | Default | Description |
|---|---|---|
| runtime.cache.enabled | false |
Active la mise en cache des réponses globalement |
| runtime.cache.ttl-seconds | 5 |
Durée de vie (secondes) du cache global |
| runtime.cache.level-2.enabled | false |
Active globalement le cache de niveau 2 distribué |
| runtime.cache.level-2.provider | "redis" |
Fournisseur de cache distribué pour le cache de niveau 2 |
| runtime.cache.level-2.connection-string | null |
Chaîne de connexion pour le fournisseur de cache de niveau 2 |
| runtime.cache.level-2.partition | null |
Nom de partition facultatif pour isoler l’espace de cache distribué |
Paramètres de compression
| Property | Default | Description |
|---|---|---|
| runtime.compression.level | optimal |
Niveau de compression de réponse HTTP (optimal, fastestou none) |
Paramètres de télémétrie
| Property | Default | Description |
|---|---|---|
| runtime.telemetry.application-insights.connection-string | null |
Chaîne de connexion Application Insights |
| runtime.telemetry.application-insights.enabled | true |
Active ou désactive la télémétrie Application Insights |
| runtime.telemetry.open-telemetry.endpoint | null |
URL du collecteur OpenTelemetry |
| runtime.telemetry.open-telemetry.headers | {} |
En-têtes d’exportation OpenTelemetry |
| runtime.telemetry.open-telemetry.service-name | "dab" |
Nom du service OpenTelemetry |
| runtime.telemetry.open-telemetry.exporter-protocol | "grpc" |
Protocole OpenTelemetry (« grpc » ou « httpprotobuf ») |
| runtime.telemetry.open-telemetry.enabled | true |
Active ou désactive OpenTelemetry |
| runtime.telemetry.open-telemetry.enabled | true |
Active ou désactive OpenTelemetry |
| runtime.telemetry.azure-log-analytics.enabled | false |
Active ou désactive Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.dab-identifier | "DabLogs" |
Identificateur de DAB dans Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.flush-interval-seconds | 5 |
Intervalle entre les envois par lots de journaux (secondes) |
| runtime.telemetry.azure-log-analytics.auth.custom-table-name | null |
Nom de table personnalisé pour Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id | null |
ID immuable de la règle de collecte de données |
| runtime.telemetry.azure-log-analytics.auth.dce-endpoint | null |
URL du point de terminaison de collecte de données |
| runtime.telemetry.file.enabled | false |
Active ou désactive la journalisation du récepteur de fichiers |
| runtime.telemetry.file.path | "/logs/dab-log.txt" |
Chemin d’accès de fichier pour les journaux de télémétrie |
| runtime.telemetry.file.rolling-interval | "Day" |
Intervalle propagé pour les fichiers journaux |
| runtime.telemetry.file.retained-file-count-limit | 1 |
Nombre maximal de fichiers journaux conservés |
| runtime.telemetry.file.file-size-limit-bytes | 1048576 |
Taille maximale du fichier en octets avant le déploiement |
| runtime.telemetry.log-level.namespace | null |
Remplacement au niveau du journal spécifique à l’espace de noms |
| runtime.health.enabled | true |
Active ou désactive le point de terminaison de contrôle d’intégrité globalement |
| runtime.health.roles | null |
Rôles autorisés pour le point de terminaison d’intégrité complet |
| runtime.health.cache-ttl-seconds | 5 |
Durée de vie (secondes) de l’entrée du cache du rapport de contrôle d’intégrité |
| runtime.health.max-query-parallelism | 4 |
Nombre maximal de requêtes de contrôle d’intégrité simultanées (plage : 1 à 8) |
Paramètres MCP
| Property | Default | Description |
|---|---|---|
| runtime.mcp.enabled | true |
Active ou désactive le point de terminaison MCP globalement |
| runtime.mcp.path | "/mcp" |
Chemin d’accès de base pour le point de terminaison MCP |
| runtime.mcp.description | null |
Description du serveur envoyée aux clients MCP lors de l’initialisation |
| runtime.mcp.dml-tools | true |
Active ou désactive tous les outils DML ou un objet pour le contrôle par outil |
| runtime.mcp.dml-tools.describe-entities | true |
Active l’outil describe_entities |
| runtime.mcp.dml-tools.create-record | true |
Active l’outil create_record |
| runtime.mcp.dml-tools.read-records | true |
Active l’outil read_records |
| runtime.mcp.dml-tools.update-record | true |
Active l’outil update_record |
| runtime.mcp.dml-tools.delete-record | true |
Active l’outil delete_record |
| runtime.mcp.dml-tools.execute-entity | true |
Active l’outil execute_entity |
| runtime.mcp.dml-tools.aggregate-records | true |
Active l’outil aggregate_records (booléen ou objet avec délai d’expiration de requête) |
Vue d’ensemble du format
{
"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`)
}
}
}
}
}
Mode (runtime d’hôte)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
host |
enum (production | development) |
❌ Non | production |
Comportement de développement
- Enabled Nitro (anciennement Banana Cake Pop) pour les tests GraphQL
- Activation de l’interface utilisateur Swagger pour les tests REST
- Vérifications d’intégrité anonymes activées
- Augmentation du détail de journalisation (débogage)
Format
{
"runtime": {
"host": {
"mode": "production" (default) | "development"
}
}
}
Taille de réponse maximale (runtime de l’hôte)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
max-response-size-mb |
integer | ❌ Non | 158 |
Définit la taille maximale (en mégaoctets) pour un résultat donné. Comme les réponses volumineuses peuvent forcer le système, max-response-size-mb limite la taille totale (différente du nombre de lignes) pour empêcher la surcharge, ce qui est particulièrement avec de grandes colonnes telles que du texte ou JSON.
| Value | Result |
|---|---|
| non défini | Utiliser la valeur par défaut |
null |
Utiliser la valeur par défaut |
integer |
Entier 32 bits positif |
<= 0 |
Non prise en charge |
Format
{
"runtime": {
"host": {
"max-response-size-mb": <integer; default: 158>
}
}
}
GraphQL (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
graphql |
object | ❌ Non | - |
Configuration globale de GraphQL.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.graphql |
enabled |
boolean | ❌ Non | None |
runtime.graphql |
path |
string | ❌ Non | "/graphql" |
runtime.graphql |
depth-limit |
integer | ❌ Non | Aucun (illimité) |
runtime.graphql |
allow-introspection |
boolean | ❌ Non | True |
runtime.graphql |
multiple-mutations.create.enabled |
boolean | ❌ Non | False |
Notes de propriété
- Les sous-chemins ne sont pas autorisés pour la
pathpropriété. - Permet
depth-limitde limiter les requêtes imbriquées. - Définissez cette option
allow-introspectionpourfalsemasquer le schéma GraphQL. - Permet
multiple-mutationsd’insérer plusieurs entités dans une seule mutation.
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)
}
}
}
}
}
Exemple : mutations multiples
Configuration
{
"runtime": {
"graphql": {
"multiple-mutations": {
"create": {
"enabled": true
}
}
}
},
"entities": {
"User": {
"source": "dbo.Users",
"permissions": [
{
"role": "anonymous",
"actions": ["create"] // entity permissions are required
}
]
}
}
}
Mutation GraphQL
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 (temps d'exécution)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
rest |
object | ❌ Non | - |
Configuration REST globale.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.rest |
enabled |
boolean | ❌ Non | None |
runtime.rest |
path |
string | ❌ Non | "/api" |
runtime.rest |
request-body-strict |
boolean | ❌ Non | True |
Notes de propriété
- Si global
enabledestfalse, le niveauenabledd’entité individuel n’a pas d’importance. - La
pathpropriété ne prend pas en charge les valeurs de sous-chemin comme/api/data. -
request-body-stricta été introduit pour simplifier les objets .NET POCO.
request-body-strict |
Behavior |
|---|---|
true |
Des champs supplémentaires dans le corps de la requête provoquent une BadRequest exception. |
false |
Les champs supplémentaires dans le corps de la demande sont ignorés. |
Format
{
"runtime": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string> (default: /api),
"request-body-strict": <true> (default) | <false>
}
}
}
Exemple : request-body-strict
- Les colonnes avec une
default()valeur sont ignorées uniquementINSERTlorsque leur valeur dans la charge utile estnull. Par conséquent,INSERTles opérations endefault()colonnes, quand c’estrequest-body-strictle castrue, ne peuvent pas entraîner de valeurs explicitesnull. Pour accomplir ce comportement, uneUPDATEopération est requise. - Les colonnes avec un
default()ne sont pas ignorées pendantUPDATEquelle que soit la valeur de la charge utile. - Les colonnes calculées sont toujours ignorées.
- Les colonnes générées automatiquement sont toujours ignorées.
Exemple de table
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
);
Charge utile de la demande
{
"Id": 999,
"Name": "Alice",
"Age": null,
"IsAdmin": null,
"IsMinor": false,
"ExtraField": "ignored"
}
Comportement d’insertion lorsque 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.
Charge utile de la réponse
{
"Id": 1, // Auto-generated by the database
"Name": "Alice",
"Age": 18, // Default applied
"IsAdmin": false, // Default applied
"IsMinor": true // Computed
}
Mettre à jour le comportement quand request-body-strict = false
UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.
Charge utile de la réponse
{
"Id": 1,
"Name": "Alice Updated",
"Age": null,
"IsAdmin": false,
"IsMinor": false // Recomputed by the database (false when age is `null`)
}
CORS (runtime d’hôte)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
cors |
object | ❌ Non | - |
Configuration CORS globale.
Tip
CORS signifie « Partage de ressources cross-origin ». Il s’agit d’une fonctionnalité de sécurité du navigateur qui contrôle si les pages web peuvent effectuer des requêtes à un domaine différent de celui qui les a servis.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.cors |
allow-credentials |
boolean | ❌ Non | False |
runtime.host.cors |
origins |
tableau de chaînes | ❌ Non | None |
Note
La allow-credentials propriété définit l’en-tête Access-Control-Allow-Credentials CORS.
Format
{
"runtime": {
"host": {
"cors": {
"allow-credentials": <true> | <false> (default),
"origins": ["<array-of-strings>"]
}
}
}
}
Note
Le caractère générique * est valide comme valeur pour origins.
Fournisseur (runtime d’hôte d’authentification)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
provider |
enum (UnauthenticatedSimulator | Custom | | | EntraId | StaticWebAppsAppService) |
❌ Non | Unauthenticated |
Sélectionne la méthode d’authentification. Chaque fournisseur valide l’identité différemment. Pour connaître la configuration pas à pas, consultez les guides pratiques du tableau suivant.
Note
La fonctionnalité 2.0 du Générateur d’API de données décrite dans cette section est actuellement en préversion et peut changer avant la disponibilité générale. Pour plus d’informations, consultez Nouveautés de la version 2.0.
Résumé du fournisseur
| Provider | Cas d’utilisation | Source d’identité | Guide pratique |
|---|---|---|---|
Unauthenticated |
DAB se trouve derrière un serveur frontal approuvé (valeur par défaut) | Aucun : toutes les requêtes s’exécutent en tant que anonymous |
Configurer le fournisseur non authentifié |
AppService |
Applications hébergées par Azure (EasyAuth) | En-tête X-MS-CLIENT-PRINCIPAL |
Configurer l’authentification App Service |
EntraID |
Microsoft Entra ID (Azure AD) | Jeton du porteur JWT | Configurer l’authentification Entra ID |
Custom |
Fournisseurs d’identité tiers (Okta, Auth0) | Jeton du porteur JWT | Configurer l’authentification JWT personnalisée |
Simulator |
Tests locaux uniquement | Simulé | Configurer l’authentification du simulateur |
Note
Le EntraId fournisseur a été précédemment nommé AzureAd. L’ancien nom fonctionne toujours pour la compatibilité.
Non authentifié (valeur par défaut)
Quand Unauthenticated est défini (ou qu’aucun fournisseur n’est spécifié), DAB n’inspecte ni ne valide aucun JWT. Toutes les requêtes s’exécutent anonymous en tant que rôle. Un service frontal tel que Gestion des API Azure ou une passerelle d’application peut toujours gérer l’authentification ou la stratégie d’accès avant que les requêtes atteignent DAB, mais DAB continue d’autoriser uniquement en tant que anonymous.
Important
Lorsqu’il Unauthenticated est actif authenticated et que les rôles personnalisés définis dans les autorisations d’entité ne sont jamais activés. Si votre configuration contient ces rôles, DAB émet un avertissement au démarrage.
{
"host": {
"authentication": {
"provider": "Unauthenticated"
}
}
}
AppService
Approuve les en-têtes d’identité injectés par Azure App Service EasyAuth.
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
EntraID
Valide les jetons JWT émis par l’ID Microsoft Entra.
{
"host": {
"authentication": {
"provider": "EntraId",
"jwt": {
"audience": "<application-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
Coutume
Valide les jetons JWT des fournisseurs d’identité tiers.
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<api-audience>",
"issuer": "https://<your-idp-domain>/"
}
}
}
}
Simulateur
Simule l’authentification pour le développement et les tests locaux.
{
"host": {
"authentication": {
"provider": "Simulator"
}
}
}
Important
Le Simulator fournisseur fonctionne uniquement lorsque runtime.host.mode c’est development. DAB ne parvient pas à démarrer si Le simulateur est configuré en mode de production.
Sélection de rôle
Pour tous les fournisseurs, à l’exception du simulateur, l’en-tête X-MS-API-ROLE sélectionne le rôle à utiliser à partir des revendications de l’utilisateur authentifié. Si elle est omise, la requête utilise le Authenticated rôle système. Pour plus d’informations sur l’évaluation des rôles, consultez vue d’ensemble de l’autorisation.
JWT (runtime d’hôte d’authentification)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
jwt |
object | ❌ Non | - |
Configuration JWT (Global JSON Web Token).
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication.jwt |
audience |
string | ✔️ Oui* | None |
runtime.host.authentication.jwt |
issuer |
string | ✔️ Oui* | None |
* Les deux audience et issuer sont obligatoires lorsque l’objet jwt est présent. L’objet jwt lui-même est requis lorsque le fournisseur est EntraID, AzureADou Custom.
Format
{
"runtime": {
"host": {
"authentication": {
"jwt": {
"audience": "<client-id>",
"issuer": "<issuer-url>"
}
}
}
}
}
Pagination (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
pagination |
object | ❌ Non | - |
Limites de pagination globales pour les points de terminaison REST et GraphQL.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.pagination |
max-page-size |
int | ❌ Non | 100,000 |
runtime.pagination |
default-page-size |
int | ❌ Non | 100 |
runtime.pagination |
next-link-relative |
boolean | ❌ Non | false |
Valeurs prises en charge par la taille maximale de page
| Value | Result |
|---|---|
integer |
Tout entier 32 bits positif est pris en charge. |
0 |
Non pris en charge. |
-1 |
Correspond par défaut à la valeur maximale prise en charge. |
< -1 |
Non pris en charge. |
Valeurs prises en charge par défaut de la taille de page
| Value | Result |
|---|---|
integer |
Entier positif inférieur à l'max-page-sizeactuel . |
0 |
Non pris en charge. |
-1 |
La valeur par défaut est le paramètre de max-page-size actuel. |
< -1 |
Non pris en charge. |
Comportement relatif au lien suivant
Quand next-link-relative c’est truele cas, les valeurs de pagination nextLink utilisent des URL relatives au lieu d’URL absolues.
| Value | Example |
|---|---|
false (valeur par défaut) |
"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
Lorsque la valeur est supérieure max-page-sizeà , les résultats sont limités à max-page-size.
Exemple : Pagination dans REST
Request
GET https://localhost:5001/api/users
Charge utile de la réponse
{
"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=="
}
Page Suivante de la demande
GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==
Exemple : Pagination dans GraphQL
Charge utile de la requête (requête)
query {
users {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Charge utile de la réponse
{
"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=="
}
}
}
Page Suivante de la demande
query {
users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Exemple : accès max-page-size aux demandes
Utilisez la max-page-size valeur en définissant $limit (REST) ou first (GraphQL) sur -1.
REST
GET https://localhost:5001/api/users?$limit=-1
GraphQL
query {
users(first: -1) {
items {
...
}
}
}
Compression (runtime)
Note
La fonctionnalité 2.0 du Générateur d’API de données décrite dans cette section est actuellement en préversion et peut changer avant la disponibilité générale. Pour plus d’informations, consultez Nouveautés de la version 2.0.
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
compression |
object | ❌ Non | - |
Configuration de la compression de réponse HTTP. Lorsqu’il est activé, DAB compresse les corps de réponse pour réduire les tailles de charge utile et améliorer les vitesses de transfert.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.compression |
level |
string | ❌ Non | "optimal" |
Valeurs prises en charge pour level
| Value | Description | Économies de compression | Impact sur les performances |
|---|---|---|---|
optimal |
Équilibre les ratios et la vitesse (valeur par défaut) | Gzip : 90,5% / Brotli : 92.2% | Utilisation modérée du processeur, légère augmentation de la latence |
fastest |
Hiérarchise la vitesse par rapport aux proportions | Gzip : 89.8% / Brotli : 91.1% | Faible utilisation du processeur, latence minimale |
none |
Pas de compression | 0% (ligne de base : 12 673 octets) | None |
En-têtes HTTP du client
La compression est appelée par l’en-tête du Accept-Encoding client. Les algorithmes pris en charge sont Gzip et Brotli. Le level paramètre configure la stratégie de compression lorsque le client et le serveur prennent en charge plusieurs algorithmes.
En-têtes pris en charge
| En-tête HTTP | Algorithme utilisé |
|---|---|
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 | ❌ Non | - |
Configuration globale du cache.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache |
enabled |
boolean | ❌ Non | False |
runtime.cache |
ttl-seconds |
integer | ❌ Non | 5 |
runtime.cache |
level-2 |
object | ❌ Non | - |
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache.level-2 |
enabled |
boolean | ❌ Non | False |
runtime.cache.level-2 |
provider |
string | ❌ Non | redis |
runtime.cache.level-2 |
connection-string |
string | ❌ Non | None |
runtime.cache.level-2 |
partition |
string | ❌ Non | None |
Tip
La propriété au niveau cache.ttl-seconds de l’entité est définie par défaut sur cette valeur globale.
Tip
Pour obtenir des exemples de configuration de bout en bout, de comportement au niveau du cache et de Redis, consultez Implémenter le cache de niveau 2.
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>,
"level-2": {
"enabled": <boolean>,
"provider": "redis",
"connection-string": <string>,
"partition": <string>
}
}
}
}
Important
Si global enabled est false, le niveau enabled d’entité individuel n’a pas d’importance.
Quand level-2.enabled c’est truele cas, DAB utilise le fournisseur de cache distribué configuré en plus du cache local en mémoire. Une entité configurée avec le niveau L1L2 du cache vérifie d’abord le cache local, puis le cache distribué, avant d’accéder à la base de données.
Télémétrie (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
telemetry |
object | ❌ Non | - |
Configuration globale de la télémétrie.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
log-level |
dictionary | ❌ Non | None |
runtime.telemetry |
application-insights |
object | ❌ Non | - |
runtime.telemetry |
open-telemetry |
object | ❌ Non | - |
runtime.telemetry |
azure-log-analytics |
object | ❌ Non | - |
runtime.telemetry |
file |
object | ❌ Non | - |
Configure la journalisation détaillée par espace de noms. Cette configuration suit les conventions de journalisation .NET standard et permet un contrôle granulaire, bien qu’elle suppose une certaine familiarité avec les internes du générateur d’API de données. Le générateur d’API de données est open source : https://aka.ms/dab
Format
{
"runtime": {
"telemetry": {
"log-level": {
"namespace": "log-level",
"namespace": "log-level"
}
}
}
}
Tip
log-level peut être rechargé à chaud dans le développement et la production. Il s’agit actuellement de la seule propriété qui prend en charge le rechargement à chaud en production.
Example
{
"runtime": {
"telemetry": {
"log-level": {
"Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
"Azure.DataApiBuilder.Core": "information",
"default": "warning"
}
}
}
}
Application Insights (télémétrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
application-insights |
object | ❌ Non | - |
Configure la journalisation dans Application Insights.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.application-insights |
enabled |
boolean | ❌ Non | true |
runtime.telemetry.application-insights |
connection-string |
string | ✔️ Oui | None |
Format
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": <true; default: true> | <false>
"connection-string": <string>
}
}
}
}
OpenTelemetry (télémétrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
open-telemetry |
object | ❌ Non | - |
Configure la journalisation sur Open Telemetry.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.open-telemetry |
enabled |
boolean | ❌ Non | true |
runtime.telemetry.open-telemetry |
endpoint |
string | ✔️ Oui | None |
runtime.telemetry.open-telemetry |
headers |
string | ❌ Non | None |
runtime.telemetry.open-telemetry |
service-name |
string | ❌ Non | « dab » |
runtime.telemetry.open-telemetry |
exporter-protocol |
enum (grpc | httpprotobuf) |
❌ Non | grpc |
Plusieurs en-têtes sont , séparés par des virgules.
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",
}
}
}
}
En savoir plus sur OTEL_EXPORTER_OTLP_HEADERS.
Note
gRPC (4317) est plus rapide et prend en charge la diffusion en continu, mais nécessite davantage d’étapes de configuration. HTTP/protobuf (4318) est plus simple et plus facile à déboguer, mais moins efficace.
Azure Log Analytics (télémétrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
azure-log-analytics |
object | ❌ Non | - |
Configure la journalisation sur Azure Log Analytics via un point de terminaison de collecte de données. En cas d’activation, DAB envoie des données de télémétrie par lots à un intervalle configurable.
Note
La fonctionnalité 2.0 du Générateur d’API de données décrite dans cette section est actuellement en préversion et peut changer avant la disponibilité générale. Pour plus d’informations, consultez Nouveautés de la version 2.0.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics |
enabled |
boolean | ❌ Non | false |
runtime.telemetry.azure-log-analytics |
dab-identifier |
string | ❌ Non | "DabLogs" |
runtime.telemetry.azure-log-analytics |
flush-interval-seconds |
integer | ❌ Non | 5 |
runtime.telemetry.azure-log-analytics |
auth |
object | ✔️ Oui* | - |
*
auth est requis lorsque enabled c’est true.
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics.auth |
custom-table-name |
string | ✔️ Oui* | null |
runtime.telemetry.azure-log-analytics.auth |
dcr-immutable-id |
string | ✔️ Oui* | null |
runtime.telemetry.azure-log-analytics.auth |
dce-endpoint |
string | ✔️ Oui* | null |
* Obligatoire quand est enabledtrue.
-
dab-identifier: étiquette transmise à Log Analytics pour vous aider à différencier les journaux provenant du générateur d’API de données. -
flush-interval-seconds— intervalle de temps (en secondes) entre l’envoi de lots de données de télémétrie. -
custom-table-name— nom de la table personnalisée dans Azure Log Analytics où les données sont stockées. -
dcr-immutable-id: ID immuable de la règle de collecte de données qui définit la façon dont les données sont collectées. -
dce-endpoint: URL du point de terminaison de collecte de données utilisée pour envoyer des données de télémétrie.
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"
}
}
}
}
}
Fichier (télémétrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
file |
object | ❌ Non | - |
Configure l’écriture de journaux de télémétrie dans un fichier local. Lorsque cette option est activée, DAB écrit la sortie du journal structuré dans le chemin d’accès de fichier spécifié avec des intervalles de roulement et des limites de taille configurables.
Note
La fonctionnalité 2.0 du Générateur d’API de données décrite dans cette section est actuellement en préversion et peut changer avant la disponibilité générale. Pour plus d’informations, consultez Nouveautés de la version 2.0.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.file |
enabled |
boolean | ❌ Non | false |
runtime.telemetry.file |
path |
string | ✔️ Oui* | "/logs/dab-log.txt" |
runtime.telemetry.file |
rolling-interval |
enum | ❌ Non | "Day" |
runtime.telemetry.file |
retained-file-count-limit |
integer | ❌ Non | 1 |
runtime.telemetry.file |
file-size-limit-bytes |
integer | ❌ Non | 1048576 |
*
path est requis lorsque enabled c’est true.
Valeurs d’intervalle propagé
| Value | Description |
|---|---|
Minute |
Nouveau fichier journal toutes les minutes |
Hour |
Nouveau fichier journal toutes les heures |
Day |
Nouveau fichier journal tous les jours (par défaut) |
Month |
Nouveau fichier journal tous les mois |
Year |
Nouveau fichier journal chaque année |
Infinite |
Ne jamais rouler dans un nouveau fichier |
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 | ❌ Non | - |
Configure le serveur MCP (SQL Model Context Protocol), qui expose les entités de base de données en tant qu’outils MCP pour les agents IA.
Note
La fonctionnalité 2.0 du Générateur d’API de données décrite dans cette section est actuellement en préversion et peut changer avant la disponibilité générale. Pour plus d’informations, consultez Nouveautés de la version 2.0.
Propriétés imbriquées
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.mcp |
enabled |
boolean | ❌ Non | true |
runtime.mcp |
path |
string | ❌ Non | "/mcp" |
runtime.mcp |
description |
string | ❌ Non | null |
runtime.mcp |
dml-tools |
booléen ou objet | ❌ Non | true |
La dml-tools propriété accepte une valeur booléenne pour activer ou désactiver tous les outils, ou un objet pour contrôler les outils individuels :
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.mcp.dml-tools |
describe-entities |
boolean | ❌ Non | true |
runtime.mcp.dml-tools |
create-record |
boolean | ❌ Non | true |
runtime.mcp.dml-tools |
read-records |
boolean | ❌ Non | true |
runtime.mcp.dml-tools |
update-record |
boolean | ❌ Non | true |
runtime.mcp.dml-tools |
delete-record |
boolean | ❌ Non | true |
runtime.mcp.dml-tools |
execute-entity |
boolean | ❌ Non | true |
runtime.mcp.dml-tools |
aggregate-records |
booléen ou objet | ❌ Non | true |
L’outil aggregate-records accepte une valeur booléenne ou un objet avec plus de paramètres :
| Parent | Property | Type | Required | Default | Gamme |
|---|---|---|---|---|---|
runtime.mcp.dml-tools.aggregate-records |
enabled |
boolean | ❌ Non | true |
|
runtime.mcp.dml-tools.aggregate-records |
query-timeout |
integer | ❌ Non | 30 |
1 à 600 secondes |
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
}
}
}
}
}
Pour activer ou désactiver tous les outils DML à la fois, définis "dml-tools" sur true ou false.
Lorsque vous désactivez un outil au niveau du runtime, l’outil n’apparaît jamais dans la réponse MCP tools/list et ne peut pas être appelé, quelles que soient les autorisations au niveau de l’entité. Pour plus d’informations sur les outils DML individuels, consultez les outils DML (Data Manipulation Language).
Avec l’aide de l’interface CLI
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
Intégrité (runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
health |
object | ❌ Non | - |
Configuration du point de terminaison de contrôle d’intégrité global (/health).
Propriétés imbriquées
| Parent | Property | Type | Required | Default | Plage/notes |
|---|---|---|---|---|---|
runtime.health |
enabled |
boolean | ❌ Non | true |
|
runtime.health |
roles |
tableau de chaînes | ✔️ Oui* | null |
*Obligatoire en mode de production |
runtime.health |
cache-ttl-seconds |
integer | ❌ Non | 5 |
Min : 0 |
runtime.health |
max-query-parallelism |
integer | ❌ Non | 4 |
Min : One, Max : Eight (limité) |
Comportement dans le développement et la production
| Condition | Comportement de développement | Comportement de production |
|---|---|---|
health.enabled = faux |
403 statut |
403 statut |
health.enabled = vrai |
Dépend du rôle | Dépend du rôle |
roles omis ou null |
Intégrité affichée |
403 statut |
rôle actuel non dans roles |
403 statut |
403 statut |
rôle actuel dans roles |
Intégrité affichée | Intégrité affichée |
roles Comprend anonymous |
Intégrité affichée | Intégrité affichée |
Format
{
"health": {
"enabled": <true> (default) | <false>,
"roles": [ <string> ], // required in production
"cache-ttl-seconds": <integer; default: 5>,
"max-query-parallelism": <integer; default: 4>
}
}
Note
Si global enabled est false, le niveau enabled d’entité individuel n’a pas d’importance.
Example
{
"health": {
"enabled": true,
"roles": ["admin", "support"],
"cache-ttl-seconds": 10,
"max-query-parallelism": 6
}
}