Runtime

A futtatókörnyezet viselkedését meghatározó konfigurációs beállítások.

Lapozási beállítások

Property Default Description
runtime.pagination.max oldalméret A maximális rekordokat határozza meg oldalanként
runtime.pagination.default-page-size Alapértelmezett rekordok beállítása válaszonként

REST-beállítások

Property Default Description
runtime.rest.path "/api" REST-végpontok alapútvonala
runtime.rest.enabled true Lehetővé teszi a REST-kérelmek engedélyezését vagy letiltását az összes entitás esetében
runtime.rest.request-body-strict true Nem engedélyezi a felesleges mezőket a kérelemtörzsben, ha igaz

GraphQL-beállítások

Property Default Description
runtime.graphql.allow-introspection true Lehetővé teszi a mögöttes GraphQL-séma lekérdezését
runtime.graphql.path "/graphql" A GraphQL-végpont alap elérési útja
runtime.graphql.enabled true Lehetővé teszi a GraphQL-kérelmek engedélyezését vagy letiltását az összes entitás esetében
runtime.graphql.depth-limit null GraphQL-lekérdezés megengedett legnagyobb mélysége
runtime.graphql.multiple-mutations.create.enabled false Több-létrehozási mutációk engedélyezése az összes entitáshoz

Gazdagép beállításai

Property Default Description
runtime.host.max-response-size-mb 158 Egyetlen eredményben engedélyezett adatbázis-válasz maximális mérete (MB)
runtime.host.mode "production" Futó mód; "production" vagy "development"

CORS-beállítások

Property Default Description
runtime.host.cors.origins [] Engedélyezett CORS-források
runtime.host.cors.allow-credentials false Az Access-Control-Allow-Credentials fejléc értékének beállítása

Hitelesítési beállítások

Property Default Description
runtime.host.authentication.provider Unauthenticated Hitelesítésszolgáltató
runtime.host.authentication.jwt.audience null JWT-célközönség
runtime.host.authentication.jwt.issuer null JWT-kiállító

Gyorsítótár beállításai

Property Default Description
runtime.cache.enabled false A válaszok globális gyorsítótárazásának engedélyezése
runtime.cache.ttl-seconds 5 Élettartam (másodperc) a globális gyorsítótárhoz
runtime.cache.level-2.enabled false Globálisan engedélyezi az elosztott 2. szintű gyorsítótárat
runtime.cache.level-2.provider "redis" Elosztott gyorsítótár-szolgáltató a 2. szintű gyorsítótárhoz
runtime.cache.level-2.connection-string null Kapcsolati sztring a 2. szintű gyorsítótár-szolgáltatóhoz
runtime.cache.level-2.partition null Nem kötelező partíciónév az elosztott gyorsítótárterület elkülönítéséhez

Tömörítési beállítások

Property Default Description
runtime.compression.level optimal HTTP-választömörítési szint (optimalvagy fastestnone)

Telemetriai beállítások

Property Default Description
runtime.telemetry.application-insights.connection-string null Application Insights kapcsolati sztring
runtime.telemetry.application-insights.enabled true Az Application Insights telemetriai adatainak engedélyezése vagy letiltása
runtime.telemetry.open-telemetry.endpoint null OpenTelemetry collector URL-címe
runtime.telemetry.open-telemetry.headers {} OpenTelemetry exportálási fejlécek
runtime.telemetry.open-telemetry.service-name "dab" OpenTelemetry szolgáltatás neve
runtime.telemetry.open-telemetry.exporter-protocol "grpc" OpenTelemetry protocol ("grpc" vagy "httpprotobuf")
runtime.telemetry.open-telemetry.enabled true OpenTelemetria engedélyezése vagy letiltása
runtime.telemetry.open-telemetry.enabled true OpenTelemetria engedélyezése vagy letiltása
runtime.telemetry.azure-log-analytics.enabled false Az Azure Log Analytics engedélyezése vagy letiltása
runtime.telemetry.azure-log-analytics.dab-identifier "DabLogs" DAB-azonosító az Azure Log Analyticsben
runtime.telemetry.azure-log-analytics.flush-interval-seconds 5 Intervallum a naplók kötegelt leküldései között (másodperc)
runtime.telemetry.azure-log-analytics.auth.custom-table-name null Az Azure Log Analytics egyéni táblaneve
runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id null Az adatgyűjtési szabály nem módosítható azonosítója
runtime.telemetry.azure-log-analytics.auth.dce-endpoint null Adatgyűjtési végpont URL-címe
runtime.telemetry.file.enabled false Fájlelfoglaló naplózásának engedélyezése vagy letiltása
runtime.telemetry.file.path "/logs/dab-log.txt" Telemetriai naplók fájlútvonala
runtime.telemetry.file.rolling-interval "Day" Naplófájlok gördülő időköze
runtime.telemetry.file.retained-file-count-limit 1 Megtartott naplófájlok maximális száma
runtime.telemetry.file.file-size-limit-bytes 1048576 Maximális fájlméret bájtban a működés előtt
runtime.telemetry.log-level.namespace null Névtérspecifikus naplószint felülbírálása
runtime.health.enabled true Az állapot-ellenőrzési végpont engedélyezése vagy letiltása globálisan
runtime.health.roles null Az átfogó állapotvégpont engedélyezett szerepkörei
runtime.health.cache-ttl-seconds 5 Élettartam (másodperc) az állapot-ellenőrzési jelentés gyorsítótár-bejegyzéséhez
runtime.health.max-query-parallelism 4 Egyidejű állapotellenőrzési lekérdezések maximális száma (tartomány: 1–8)

MCP-beállítások

Property Default Description
runtime.mcp.enabled true Az MCP-végpont globális engedélyezése vagy letiltása
runtime.mcp.path "/mcp" Az MCP-végpont alap elérési útja
runtime.mcp.description null Az MCP-ügyfeleknek küldött kiszolgáló leírása az inicializálás során
runtime.mcp.dml-tools true Engedélyezi vagy letiltja az összes DML-eszközt, vagy egy objektumot az eszközenkénti vezérlőhöz
runtime.mcp.dml-tools.describe-entities true Engedélyezi a describe_entities eszközt
runtime.mcp.dml-tools.create-record true Engedélyezi a create_record eszközt
runtime.mcp.dml-tools.read-records true Engedélyezi a read_records eszközt
runtime.mcp.dml-tools.update-record true Engedélyezi a update_record eszközt
runtime.mcp.dml-tools.delete-record true Engedélyezi a delete_record eszközt
runtime.mcp.dml-tools.execute-entity true Engedélyezi a execute_entity eszközt
runtime.mcp.dml-tools.aggregate-records true Engedélyezi a aggregate_records eszközt (logikai vagy objektum lekérdezési időtúllépéssel)

Formátum áttekintése

{
  "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`)
        }
      }
    }
  }
}

Mód (Gazdagép futtatókörnyezete)

Parent Property Típus Required Default
runtime host enum (production | development) ❌ Nem production

Fejlesztési viselkedés

  • Engedélyezve van a Nitro (korábbi nevén Banana Cake Pop) a GraphQL-teszteléshez
  • Engedélyezett Swagger felhasználói felület REST-teszteléshez
  • Engedélyezett névtelen állapotellenőrzések
  • Fokozott naplózási részletesség (Hibakeresés)

Format

{
  "runtime": {
    "host": {
      "mode": "production" (default) | "development"
    }
  }
}

Válasz maximális mérete (gazdagép-futtatókörnyezet)

Parent Property Típus Required Default
runtime.host max-response-size-mb egész szám ❌ Nem 158

Az adott eredmény maximális méretét (megabájtban) állítja be. Mivel a nagy válaszok túlterhelhetik a rendszert, max-response-size-mb a túlterhelés elkerülése érdekében a teljes méretet (a sorok számától eltérően) korlátozza, ami különösen a nagy oszlopoknál, például a szövegnél vagy a JSON-nál történik.

Value Result
nincs beállítva Az alapértelmezett beállítás használata
null Az alapértelmezett beállítás használata
integer Bármely pozitív 32 bites egész szám
<= 0 Nem támogatott

Format

{
  "runtime": {
    "host": {
      "max-response-size-mb": <integer; default: 158>
    }
  }
}

GraphQL (futtatókörnyezet)

Parent Property Típus Required Default
runtime graphql objektum ❌ Nem -

Globális GraphQL-konfiguráció.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.graphql enabled boolean ❌ Nem None
runtime.graphql path karakterlánc ❌ Nem "/graphql"
runtime.graphql depth-limit egész szám ❌ Nem Nincs (korlátlan)
runtime.graphql allow-introspection boolean ❌ Nem True
runtime.graphql multiple-mutations.create.enabled boolean ❌ Nem False

Tulajdonságjegyzetek

  • A tulajdonsághoz nem engedélyezett a path mellékút.
  • Beágyazott lekérdezések korlátozására használható depth-limit .
  • Állítsa be allow-introspection úgy, hogy false elrejtse a GraphQL-sémát.
  • Több multiple-mutations entitás beszúrása egyetlen mutációba.

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

Példa: több mutáció

Configuration

{
  "runtime": {
    "graphql": {
      "multiple-mutations": {
        "create": {
          "enabled": true
        }
      }
    }
  },
  "entities": {
    "User": {
      "source": "dbo.Users",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["create"] // entity permissions are required
        }
      ]
    }
  }
}

GraphQL-mutáció

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 (futtatókörnyezet)

Parent Property Típus Required Default
runtime rest objektum ❌ Nem -

Globális REST-konfiguráció.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.rest enabled boolean ❌ Nem None
runtime.rest path karakterlánc ❌ Nem "/api"
runtime.rest request-body-strict boolean ❌ Nem True

Tulajdonságjegyzetek

  • Ha globális enabled , akkor falseaz egyes entitásszintek enabled nem számítanak.
  • A path tulajdonság nem támogatja az olyan segédértékeket, mint a /api/data.
  • request-body-strict a .NET POCO-objektumok egyszerűsítése érdekében került bevezetésre.
request-body-strict Behavior
true A kérelem törzsében lévő további mezők kivételt okoznak BadRequest .
false A kérelem törzsében lévő további mezők figyelmen kívül lesznek hagyva.

Format

{
  "runtime": {
    "rest": {
      "enabled": <true> (default) | <false>,
      "path": <string> (default: /api),
      "request-body-strict": <true> (default) | <false>
    }
  }
}

Példa: request-body-strict

  • Az értékekkel rendelkező default() oszlopok csak akkor lesznek figyelmen kívül hagyvaINSERT, ha a hasznos adat értéke .null Ennek következtében INSERT az oszlopokban default() végzett műveletek , ha request-body-strict vannak true, nem eredményezhetnek explicit null értékeket. Ennek a viselkedésnek a végrehajtásához műveletre UPDATE van szükség.
  • A hasznos adatértéktől függetlenül a rendszer nem hagyja figyelmen kívül default() az egy UPDATE oszlopot tartalmazó oszlopokat.
  • A számított oszlopok mindig figyelmen kívül lesznek hagyva.
  • Az automatikusan létrehozott oszlopok mindig figyelmen kívül lesznek hagyva.

Mintatábla

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
);

Hasznos adatok kérése

{
  "Id": 999,
  "Name": "Alice",
  "Age": null,
  "IsAdmin": null,
  "IsMinor": false,
  "ExtraField": "ignored"
}

Viselkedés beszúrása 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.

Választerhelés

{
  "Id": 1,          // Auto-generated by the database
  "Name": "Alice",
  "Age": 18,        // Default applied
  "IsAdmin": false, // Default applied
  "IsMinor": true   // Computed
}

Frissítési viselkedés, ha request-body-strict = false

UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.

Választerhelés

{
  "Id": 1,
  "Name": "Alice Updated",
  "Age": null,
  "IsAdmin": false,
  "IsMinor": false // Recomputed by the database (false when age is `null`)
}

CORS (gazdagép-futtatókörnyezet)

Parent Property Típus Required Default
runtime.host cors objektum ❌ Nem -

Globális CORS-konfiguráció.

Tip

A CORS a "Forrásközi erőforrás-megosztás" rövidítése. Ez egy böngészőbiztonsági funkció, amely azt szabályozza, hogy a weblapok kérhetnek-e kéréseket egy másik tartományhoz, mint amelyik kiszolgálta őket.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.host.cors allow-credentials boolean ❌ Nem False
runtime.host.cors origins karakterlánc-tömb ❌ Nem None

Note

A allow-credentials tulajdonság beállítja a Access-Control-Allow-Credentials CORS-fejlécet.

Format

{
  "runtime": {
    "host": {
      "cors": {
        "allow-credentials": <true> | <false> (default),
        "origins": ["<array-of-strings>"]
      }
    }
  }
}

Note

A helyettesítő karakter * a következő értékként originsérvényes: .

Szolgáltató (Hitelesítési gazdagép futtatókörnyezete)

Parent Property Típus Required Default
runtime.host.authentication provider enum (UnauthenticatedSimulator | Custom | | | EntraId | StaticWebAppsAppService) ❌ Nem Unauthenticated

Kiválasztja a hitelesítési módszert. Minden szolgáltató eltérően ellenőrzi az identitást. A lépésenkénti beállításhoz tekintse meg az alábbi táblázatban található útmutatókat.

Note

Az ebben a szakaszban ismertetett Data API Builder 2.0 funkció jelenleg előzetes verzióban érhető el, és az általános rendelkezésre állás előtt változhat. További információ: A 2.0-s verzió újdonságai.

Szolgáltató összefoglalása

Provider Felhasználási eset Identitásforrás Útmutató
Unauthenticated A DAB egy megbízható előtér mögött helyezkedik el (alapértelmezett) Nincs – az összes kérés a következőként fut: anonymous A hitelesítés nélküli szolgáltató konfigurálása
AppService Azure-ban üzemeltetett alkalmazások (EasyAuth) X-MS-CLIENT-PRINCIPAL Fejléc App Service-hitelesítés konfigurálása
EntraID Microsoft Entra ID (Azure AD) JWT-tulajdonosi jogkivonat Entra ID hitelesítés konfigurálása
Custom Külső azonosítók (Okta, Hitelesítés0) JWT-tulajdonosi jogkivonat Egyéni JWT-hitelesítés konfigurálása
Simulator Csak helyi tesztelés Szimulált Szimulátor-hitelesítés konfigurálása

Note

A EntraId szolgáltató neve korábban el lett nevezve AzureAd. A régi név továbbra is kompatibilis.

Hitelesítés nélküli (alapértelmezett)

Ha Unauthenticated be van állítva (vagy nincs megadva szolgáltató), a DAB nem ellenőrzi vagy ellenőrzi a JWT-t. Minden kérés szerepkörként anonymous fut. Az olyan előtérbeli szolgáltatások, mint az Azure API Management vagy az application gateway, továbbra is képesek kezelni a hitelesítési vagy hozzáférési szabályzatot, mielőtt a kérések elérnék a DAB-t, de a DAB továbbra is csak a következőképpen engedélyezi a hitelesítést anonymous.

Important

Ha Unauthenticated aktív, authenticated és az entitásengedélyekben definiált egyéni szerepkörök soha nem aktiválódnak. Ha a konfiguráció tartalmazza ezeket a szerepköröket, a DAB figyelmeztetést ad ki indításkor.

{
  "host": {
    "authentication": {
      "provider": "Unauthenticated"
    }
  }
}

AppService

Megbízik az Azure App Service EasyAuth által injektált identitásfejlécekben.

{
  "host": {
    "authentication": {
      "provider": "AppService"
    }
  }
}

EntraID

Ellenőrzi a Microsoft Entra ID által kibocsátott JWT-jogkivonatokat.

{
  "host": {
    "authentication": {
      "provider": "EntraId",
      "jwt": {
        "audience": "<application-id>",
        "issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
      }
    }
  }
}

Személyre szabott

Ellenőrzi a külső identitásszolgáltatók JWT-jogkivonatait.

{
  "host": {
    "authentication": {
      "provider": "Custom",
      "jwt": {
        "audience": "<api-audience>",
        "issuer": "https://<your-idp-domain>/"
      }
    }
  }
}

Szimulátor

A hitelesítést szimulálja a helyi fejlesztéshez és teszteléshez.

{
  "host": {
    "authentication": {
      "provider": "Simulator"
    }
  }
}

Important

A Simulator szolgáltató csak akkor működik, ha runtime.host.mode van development. A DAB nem indul el, ha a szimulátor éles módban van konfigurálva.

Szerepkör kiválasztása

A Szimulátor kivételével minden szolgáltató esetében a X-MS-API-ROLE fejléc a hitelesített felhasználó jogcímei közül választja ki a használni kívánt szerepkört. Ha nincs megadva, a kérés a rendszerszerepkört Authenticated használja. A szerepkör-értékeléssel kapcsolatos részletekért tekintse meg az engedélyezés áttekintését.

JWT (Hitelesítési gazdagép futtatókörnyezete)

Parent Property Típus Required Default
runtime.host.authentication jwt objektum ❌ Nem -

Globális JSON-webjogkivonat (JWT) konfigurációja.

Data API Builderben támogatott JSON-webes jogkivonatok diagramja.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.host.authentication.jwt audience karakterlánc ✔️ Igen* None
runtime.host.authentication.jwt issuer karakterlánc ✔️ Igen* None

* Mindkettőre audienceissuer szükség van, ha az jwt objektum jelen van. Az jwt objektumra akkor van szükség, ha a szolgáltató EntraIDaz , AzureADvagy Custom.

Format

{
  "runtime": {
    "host": {
      "authentication": {
        "jwt": {
          "audience": "<client-id>",
          "issuer": "<issuer-url>"
        }
      }
    }
  }
}

Lapozás (futtatókörnyezet)

Parent Property Típus Required Default
runtime pagination objektum ❌ Nem -

A REST- és GraphQL-végpontok globális lapszámozási korlátai.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.pagination max-page-size int ❌ Nem 100,000
runtime.pagination default-page-size int ❌ Nem 100
runtime.pagination next-link-relative boolean ❌ Nem false

Maximális oldalmérettel támogatott értékek

Value Result
integer Minden pozitív 32 bites egész szám támogatott.
0 Nem támogatott.
-1 Alapértelmezés szerint a maximálisan támogatott érték.
< -1 Nem támogatott.

Alapértelmezett oldalméretű támogatott értékek

Value Result
integer Az aktuális max-page-sizekisebb pozitív egész szám.
0 Nem támogatott.
-1 Az aktuális max-page-size beállítás alapértelmezett értéke.
< -1 Nem támogatott.

Ha next-link-relative igen, akkor a truelapozási nextLink értékek relatív URL-címeket használnak az abszolút URL-címek helyett.

Value Example
false (alapértelmezett) "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

Ha az érték nagyobb, mint max-page-size, az eredmények a következő időpontban max-page-sizelesznek leképezve: .

Példa: Lapozás REST-ben

Request

GET https://localhost:5001/api/users

Választerhelés

{
  "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=="
}

Következő lap kérése

GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==

Példa: Lapozás a GraphQL-ben

Hasznos adatok kérése (lekérdezés)

query {
  users {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Választerhelés

{
  "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=="
    }
  }
}

Következő lap kérése

query {
  users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Példa: Hozzáférés kérésekben max-page-size

Használja az értéket a max-page-size (REST) vagy $limit a (GraphQL) beállításával first-1.

REST

GET https://localhost:5001/api/users?$limit=-1

GraphQL

query {
  users(first: -1) {
    items {
      ...
    }
  }
}

Tömörítés (futtatókörnyezet)

Note

Az ebben a szakaszban ismertetett Data API Builder 2.0 funkció jelenleg előzetes verzióban érhető el, és az általános rendelkezésre állás előtt változhat. További információ: A 2.0-s verzió újdonságai.

Parent Property Típus Required Default
runtime compression objektum ❌ Nem -

HTTP-választömörítés konfigurálása. Ha engedélyezve van, a DAB tömöríti a választörzseket a hasznos adatok méretének csökkentése és az átviteli sebesség javítása érdekében.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.compression level karakterlánc ❌ Nem "optimal"

Támogatott értékek a következőhöz: level

Value Description Tömörítési megtakarítás A teljesítményre gyakorolt hatás
optimal Egyenlegek aránya és sebessége (alapértelmezett) Gzip: 90,5% / Brotli: 92,2% Mérsékelt processzorhasználat, enyhe késés-növekedés
fastest A sebesség arányának rangsorolása Gzip: 89,8% / Brotli: 91,1% Alacsony processzorhasználat, minimális késés
none Nincs tömörítés 0% (alapkonfiguráció: 12 673 bájt) None

Ügyfél HTTP-fejlécei

A tömörítést az ügyfél fejléce Accept-Encoding hívja meg. A támogatott algoritmusok a Gzip és a Brotli. A level beállítás akkor konfigurálja a tömörítési stratégiát, ha az ügyfél és a kiszolgáló is több algoritmust támogat.

Támogatott fejlécek

HTTP-fejléc Használt algoritmus
Accept-Encoding: gzip Gzip
Accept-Encoding: br Brotli

Format

{
  "runtime": {
    "compression": {
      "level": <"optimal"> (default) | <"fastest"> | <"none">
    }
  }
}

Example

{
  "runtime": {
    "compression": {
      "level": "optimal"
    }
  }
}

Gyorsítótár (futtatókörnyezet)

Parent Property Típus Required Default
runtime cache objektum ❌ Nem -

Globális gyorsítótár konfigurálása.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.cache enabled boolean ❌ Nem False
runtime.cache ttl-seconds egész szám ❌ Nem 5
runtime.cache level-2 objektum ❌ Nem -
Parent Property Típus Required Default
runtime.cache.level-2 enabled boolean ❌ Nem False
runtime.cache.level-2 provider karakterlánc ❌ Nem redis
runtime.cache.level-2 connection-string karakterlánc ❌ Nem None
runtime.cache.level-2 partition karakterlánc ❌ Nem None

Tip

Az entitásszintű cache.ttl-seconds tulajdonság alapértelmezés szerint erre a globális értékre van bekapcsolva.

Tip

A végpontok közötti beállításról, a gyorsítótárszintű viselkedésről és a Redis-példákról lásd a 2. szintű gyorsítótár implementálását.

Format

{
  "runtime": {
    "cache":  {
      "enabled": <boolean>,
      "ttl-seconds": <integer>,
      "level-2": {
        "enabled": <boolean>,
        "provider": "redis",
        "connection-string": <string>,
        "partition": <string>
      }
    }
  }
}

Important

Ha globális enabled , akkor falseaz egyes entitásszintek enabled nem számítanak.

Ha level-2.enabled igen, a trueDAB a helyi memóriabeli gyorsítótár mellett a konfigurált elosztott gyorsítótár-szolgáltatót is használja. A gyorsítótárszinttel L1L2 konfigurált entitás először a helyi gyorsítótárat, majd az elosztott gyorsítótárat ellenőrzi az adatbázisba való ugrás előtt.

Telemetria (futtatókörnyezet)

Parent Property Típus Required Default
runtime telemetry objektum ❌ Nem -

Globális telemetriai konfiguráció.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.telemetry log-level dictionary ❌ Nem None
runtime.telemetry application-insights objektum ❌ Nem -
runtime.telemetry open-telemetry objektum ❌ Nem -
runtime.telemetry azure-log-analytics objektum ❌ Nem -
runtime.telemetry file objektum ❌ Nem -

A naplózás részletességét konfigurálja névtérenként. Ez a konfiguráció a szabványos .NET-naplózási konvenciók szerint működik, és lehetővé teszi a részletes vezérlést, bár feltételezi, hogy a Data API Builder belső beállításainak ismerete némiképp ismerős. A Data API Builder nyílt forráskódú: https://aka.ms/dab

Format

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "namespace": "log-level",
        "namespace": "log-level"
      }
    }
  }
}

Tip

log-level a fejlesztésben és az éles környezetben is gyakran újra betölthető. Jelenleg ez az egyetlen tulajdonság, amely támogatja a gyakori elérésű újratöltést az éles környezetben.

Example

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
        "Azure.DataApiBuilder.Core": "information",
        "default": "warning"
      }
    }
  }
}

Application Insights (telemetria)

Parent Property Típus Required Default
runtime.telemetry application-insights objektum ❌ Nem -

Az Application Insightsba való naplózást konfigurálja.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.telemetry.application-insights enabled boolean ❌ Nem true
runtime.telemetry.application-insights connection-string karakterlánc ✔️ Igen None

Format

{
  "runtime": {
    "telemetry": {
      "application-insights": {
        "enabled": <true; default: true> | <false>
        "connection-string": <string>
      }
    }
  }
}

OpenTelemetria (telemetria)

Parent Property Típus Required Default
runtime.telemetry open-telemetry objektum ❌ Nem -

A naplózást a Telemetria megnyitása gombra konfigurálja.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.telemetry.open-telemetry enabled boolean ❌ Nem true
runtime.telemetry.open-telemetry endpoint karakterlánc ✔️ Igen None
runtime.telemetry.open-telemetry headers karakterlánc ❌ Nem None
runtime.telemetry.open-telemetry service-name karakterlánc ❌ Nem "dab"
runtime.telemetry.open-telemetry exporter-protocol enum (grpc | httpprotobuf) ❌ Nem grpc

Több fejléc ( , vessző) van elválasztva.

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

További információ a OTEL_EXPORTER_OTLP_HEADERS.

Note

A gRPC (4317) gyorsabb és támogatja a streamelést, de több beállítási lépést igényel. A HTTP/protobuf (4318) egyszerűbb és egyszerűbb hibakeresés, de kevésbé hatékony.

Azure Log Analytics (telemetria)

Parent Property Típus Required Default
runtime.telemetry azure-log-analytics objektum ❌ Nem -

Az Azure Log Analyticsbe való naplózást egy adatgyűjtési végponton keresztül konfigurálja. Ha engedélyezve van, a DAB konfigurálható időközönként küld telemetriai adatokat kötegekben.

Note

Az ebben a szakaszban ismertetett Data API Builder 2.0 funkció jelenleg előzetes verzióban érhető el, és az általános rendelkezésre állás előtt változhat. További információ: A 2.0-s verzió újdonságai.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.telemetry.azure-log-analytics enabled boolean ❌ Nem false
runtime.telemetry.azure-log-analytics dab-identifier karakterlánc ❌ Nem "DabLogs"
runtime.telemetry.azure-log-analytics flush-interval-seconds egész szám ❌ Nem 5
runtime.telemetry.azure-log-analytics auth objektum ✔️ Igen* -

* auth szükség van, ha enabled van true.

Parent Property Típus Required Default
runtime.telemetry.azure-log-analytics.auth custom-table-name karakterlánc ✔️ Igen* null
runtime.telemetry.azure-log-analytics.auth dcr-immutable-id karakterlánc ✔️ Igen* null
runtime.telemetry.azure-log-analytics.auth dce-endpoint karakterlánc ✔️ Igen* null

* Kötelező, ha enabled van true.

  • dab-identifier– a Log Analyticsnek átadott címke, amely segít megkülönböztetni a Data API Buildertől származó naplókat.
  • flush-interval-seconds— a telemetriai adatok kötegeinek küldése közötti időintervallum (másodpercben).
  • custom-table-name– annak az egyéni táblának a neve az Azure Log Analyticsben, ahol az adatok tárolása történik.
  • dcr-immutable-id— az adatgyűjtési szabály nem módosítható azonosítója, amely meghatározza az adatok gyűjtésének módját.
  • dce-endpoint– a telemetriai adatok küldéséhez használt adatgyűjtési végpont URL-címe.

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

Fájl (telemetria)

Parent Property Típus Required Default
runtime.telemetry file objektum ❌ Nem -

Telemetriai naplók helyi fájlba írását konfigurálja. Ha engedélyezve van, a DAB strukturált naplókimenetet ír a megadott fájlútvonalra konfigurálható gördülési időközökkel és méretkorlátokkal.

Note

Az ebben a szakaszban ismertetett Data API Builder 2.0 funkció jelenleg előzetes verzióban érhető el, és az általános rendelkezésre állás előtt változhat. További információ: A 2.0-s verzió újdonságai.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.telemetry.file enabled boolean ❌ Nem false
runtime.telemetry.file path karakterlánc ✔️ Igen* "/logs/dab-log.txt"
runtime.telemetry.file rolling-interval felsorolás ❌ Nem "Day"
runtime.telemetry.file retained-file-count-limit egész szám ❌ Nem 1
runtime.telemetry.file file-size-limit-bytes egész szám ❌ Nem 1048576

* path szükség van, ha enabled van true.

Gördülő intervallumértékek

Value Description
Minute Új naplófájl percenként
Hour Új naplófájl óránként
Day Új naplófájl minden nap (alapértelmezett)
Month Új naplófájl havonta
Year Új naplófájl minden évben
Infinite Soha ne gördítsen új fájlba

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 (futtatókörnyezet)

Parent Property Típus Required Default
runtime mcp objektum ❌ Nem -

Konfigurálja az SQL Model Context Protocol (MCP) kiszolgálót, amely az adatbázis-entitásokat MCP-eszközként teszi elérhetővé az AI-ügynökök számára.

Note

Az ebben a szakaszban ismertetett Data API Builder 2.0 funkció jelenleg előzetes verzióban érhető el, és az általános rendelkezésre állás előtt változhat. További információ: A 2.0-s verzió újdonságai.

Beágyazott tulajdonságok

Parent Property Típus Required Default
runtime.mcp enabled boolean ❌ Nem true
runtime.mcp path karakterlánc ❌ Nem "/mcp"
runtime.mcp description karakterlánc ❌ Nem null
runtime.mcp dml-tools logikai vagy objektum ❌ Nem true

A dml-tools tulajdonság egy logikai értéket fogad el az összes eszköz vagy objektum engedélyezéséhez vagy letiltásához az egyes eszközök vezérléséhez:

Parent Property Típus Required Default
runtime.mcp.dml-tools describe-entities boolean ❌ Nem true
runtime.mcp.dml-tools create-record boolean ❌ Nem true
runtime.mcp.dml-tools read-records boolean ❌ Nem true
runtime.mcp.dml-tools update-record boolean ❌ Nem true
runtime.mcp.dml-tools delete-record boolean ❌ Nem true
runtime.mcp.dml-tools execute-entity boolean ❌ Nem true
runtime.mcp.dml-tools aggregate-records logikai vagy objektum ❌ Nem true

Az aggregate-records eszköz egy logikai vagy egy további beállításokkal rendelkező objektumot fogad el:

Parent Property Típus Required Default Tartomány
runtime.mcp.dml-tools.aggregate-records enabled boolean ❌ Nem true
runtime.mcp.dml-tools.aggregate-records query-timeout egész szám ❌ Nem 30 1–600 másodperc

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

Ha az összes DML-eszközt egyszerre szeretné engedélyezni vagy letiltani, állítsa be vagy "dml-tools"tiltsa true lefalse.

Ha futásidőben letilt egy eszközt, az eszköz soha nem jelenik meg az MCP-válaszban tools/list , és entitásszintű engedélyektől függetlenül nem hívható meg. Az egyes DML-eszközökkel kapcsolatos további információkért lásd: Adatmanipulációs nyelv (DML) eszközök.

A parancssori felület használata

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

Állapot (futtatókörnyezet)

Parent Property Típus Required Default
runtime health objektum ❌ Nem -

Globális állapotellenőrzési végpont (/health) konfigurációja.

Beágyazott tulajdonságok

Parent Property Típus Required Default Tartomány/jegyzetek
runtime.health enabled boolean ❌ Nem true
runtime.health roles karakterlánc-tömb ✔️ Igen* null *Éles módban szükséges
runtime.health cache-ttl-seconds egész szám ❌ Nem 5 Min: 0
runtime.health max-query-parallelism egész szám ❌ Nem 4 Min: Egy, Max: Nyolc (rögzített)

A fejlesztés és az éles környezet viselkedése

Condition Fejlesztési viselkedés Éles viselkedés
health.enabled = hamis 403 állapot 403 állapot
health.enabled = igaz Szerepkörtől függ Szerepkörtől függ
roles ki van hagyva vagy null Állapot jelenik meg 403 állapot
jelenlegi szerepkör nincs a következőben: roles 403 állapot 403 állapot
aktuális szerepkör a következőben: roles Állapot jelenik meg Állapot jelenik meg
roles Tartalmazza anonymous Állapot jelenik meg Állapot jelenik meg

Format

{
  "health": {
    "enabled": <true> (default) | <false>,
    "roles": [ <string> ], // required in production
    "cache-ttl-seconds": <integer; default: 5>,
    "max-query-parallelism": <integer; default: 4>
  }
}

Note

Ha globális enabled , akkor falseaz egyes entitásszintek enabled nem számítanak.

Example

{
  "health": {
    "enabled": true,
    "roles": ["admin", "support"],
    "cache-ttl-seconds": 10,
    "max-query-parallelism": 6
  }
}