Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Параметры конфигурации, определяющие поведение среды выполнения.
Параметры разбиения на страницы
| Property | Default | Description |
|---|---|---|
| размер страницы runtime.pagination.max | Определяет максимальные записи на страницу | |
| runtime.pagination.default-page-size | Задает записи по умолчанию на ответ |
Параметры REST
| Property | Default | Description |
|---|---|---|
| runtime.rest.path | "/api" |
Базовый путь для конечных точек REST |
| runtime.rest.enabled | true |
Разрешает включение или отключение запросов REST для всех сущностей |
| runtime.rest.request-body-strict | true |
Запрещает лишние поля в тексте запроса, если значение true |
Параметры GraphQL
| Property | Default | Description |
|---|---|---|
| runtime.graphql.allow-introspection | true |
Позволяет запрашивать базовую схему GraphQL |
| runtime.graphql.path | "/graphql" |
Базовый путь для конечной точки GraphQL |
| runtime.graphql.enabled | true |
Разрешает включение или отключение запросов GraphQL для всех сущностей |
| runtime.graphql.depth-limit | null |
Максимальная допустимая глубина запроса GraphQL |
| runtime.graphql.multiple-mutations.create.enabled | false |
Позволяет создавать несколько мутаций для всех сущностей |
Параметры узла
| Property | Default | Description |
|---|---|---|
| runtime.host.max-response-size-mb | 158 |
Максимальный размер ответа базы данных (МБ), разрешенный в одном результате |
| runtime.host.mode | "production" |
Режим выполнения; "production" или "development" |
Параметры CORS
| Property | Default | Description |
|---|---|---|
| runtime.host.cors.origins | [] |
Разрешенные источники CORS |
| runtime.host.cors.allow-credentials | false |
Задает значение заголовка Access-Control-Allow-Credentials |
Параметры проверки подлинности
| Property | Default | Description |
|---|---|---|
| runtime.host.authentication.provider | Unauthenticated |
Поставщик проверки подлинности |
| runtime.host.authentication.jwt.audience | null |
Аудитория JWT |
| runtime.host.authentication.jwt.issuer | null |
Издатель JWT |
Параметры кэша
| Property | Default | Description |
|---|---|---|
| runtime.cache.enabled | false |
Обеспечивает глобальное кэширование ответов |
| runtime.cache.ttl-seconds | 5 |
Время жизни (в секундах) для глобального кэша |
| runtime.cache.level-2.enabled | false |
Включает глобальный кэш распределенного уровня 2 |
| runtime.cache.level-2.provider | "redis" |
Поставщик распределенного кэша для кэша уровня 2 |
| runtime.cache.level-2.connection-string | null |
Строка подключения для поставщика кэша уровня 2 |
| runtime.cache.level-2.partition | null |
Необязательное имя секции для изоляции распределенного пространства кэша |
Параметры сжатия
| Property | Default | Description |
|---|---|---|
| runtime.compression.level | optimal |
Уровень сжатия http-ответа (optimalилиfastestnone) |
Настройки телеметрии
| Property | Default | Description |
|---|---|---|
| runtime.telemetry.application-insights.connection-string | null |
Строка подключения Application Insights |
| runtime.telemetry.application-insights.enabled | true |
Включает или отключает данные телеметрии Application Insights |
| runtime.telemetry.open-telemetry.endpoint | null |
URL-адрес сборщика OpenTelemetry |
| runtime.telemetry.open-telemetry.headers | {} |
Заголовки экспорта OpenTelemetry |
| runtime.telemetry.open-telemetry.service-name | "dab" |
Имя службы OpenTelemetry |
| runtime.telemetry.open-telemetry.exporter-protocol | "grpc" |
Протокол OpenTelemetry ("grpc" или "httpprotobuf") |
| runtime.telemetry.open-telemetry.enabled | true |
Включает или отключает OpenTelemetry |
| runtime.telemetry.open-telemetry.enabled | true |
Включает или отключает OpenTelemetry |
| runtime.telemetry.azure-log-analytics.enabled | false |
Включает или отключает Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.dab-identifier | "DabLogs" |
Идентификатор DAB в Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.flush-interval-seconds | 5 |
Интервал между отправками пакета журнала (секунды) |
| runtime.telemetry.azure-log-analytics.auth.custom-table-name | null |
Пользовательское имя таблицы для Azure Log Analytics |
| runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id | null |
Неизменяемый идентификатор правила сбора данных |
| runtime.telemetry.azure-log-analytics.auth.dce-endpoint | null |
URL-адрес конечной точки сбора данных |
| runtime.telemetry.file.enabled | false |
Включение или отключение ведения журнала приемника файлов |
| runtime.telemetry.file.path | "/logs/dab-log.txt" |
Путь к файлу для журналов телеметрии |
| runtime.telemetry.file.rolling-interval | "Day" |
Последовательный интервал для файлов журналов |
| runtime.telemetry.file.retained-file-count-limit | 1 |
Максимальное количество сохраненных файлов журнала |
| runtime.telemetry.file.file-size-limit-bytes | 1048576 |
Максимальный размер файла в байтах перед развертыванием |
| пространство имен runtime.telemetry.log уровня.namespace | null |
Переопределение уровня журнала для конкретного пространства имен |
| runtime.health.enabled | true |
Включает или отключает конечную точку проверки работоспособности глобально |
| runtime.health.role | null |
Разрешенные роли для комплексной конечной точки работоспособности |
| runtime.health.cache-ttl-seconds | 5 |
Время жизни (секунды) для записи кэша отчетов проверки работоспособности |
| параллелизм runtime.health.max-query-parallelism | 4 |
Максимальное число одновременных запросов проверки работоспособности (диапазон: 1–8) |
Параметры MCP
| Property | Default | Description |
|---|---|---|
| runtime.mcp.enabled | true |
Включает или отключает конечную точку MCP глобально |
| runtime.mcp.path | "/mcp" |
Базовый путь для конечной точки MCP |
| runtime.mcp.description | null |
Описание сервера, отправленное клиентам MCP во время инициализации |
| runtime.mcp.dml-tools | true |
Включает или отключает все средства DML или объект для элемента управления для каждого средства |
| runtime.mcp.dml-tools.describe-entities | true |
Включает средство describe_entities |
| runtime.mcp.dml-tools.create-record | true |
Включает средство create_record |
| runtime.mcp.dml-tools.read-records | true |
Включает средство read_records |
| runtime.mcp.dml-tools.update-record | true |
Включает средство update_record |
| runtime.mcp.dml-tools.delete-record | true |
Включает средство delete_record |
| runtime.mcp.dml-tools.execute-entity | true |
Включает средство execute_entity |
| runtime.mcp.dml-tools.aggregate-records | true |
Включает средство aggregate_records (логическое значение или объект с временем ожидания запроса) |
Обзор формата
{
"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`)
}
}
}
}
}
Режим (среда выполнения узла)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
host |
перечисление (production | development) |
❌ Нет | production |
Поведение разработки
- Включено Nitro (ранее банановый торт pop) для тестирования GraphQL
- Включенный пользовательский интерфейс Swagger для тестирования REST
- Включена анонимная проверка работоспособности
- Повышенная детализация ведения журнала (отладка)
Format
{
"runtime": {
"host": {
"mode": "production" (default) | "development"
}
}
}
Максимальный размер ответа (среда выполнения узла)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
max-response-size-mb |
integer | ❌ Нет | 158 |
Задает максимальный размер (в мегабайтах) для любого заданного результата. Так как большие ответы могут напрягать систему, max-response-size-mb заголовок общего размера (отличается от количества строк), чтобы предотвратить перегрузку, которая особенно с большими столбцами, такими как текст или JSON.
| Value | Result |
|---|---|
| не задано | Использовать по умолчанию |
null |
Использовать по умолчанию |
integer |
Любое положительное 32-разрядное целое число |
<= 0 |
Не поддерживается |
Format
{
"runtime": {
"host": {
"max-response-size-mb": <integer; default: 158>
}
}
}
GraphQL (среда выполнения)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
graphql |
object | ❌ Нет | - |
Конфигурация Global GraphQL.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.graphql |
enabled |
boolean | ❌ Нет | None |
runtime.graphql |
path |
string | ❌ Нет | "/graphql" |
runtime.graphql |
depth-limit |
integer | ❌ Нет | Нет (без ограничений) |
runtime.graphql |
allow-introspection |
boolean | ❌ Нет | True |
runtime.graphql |
multiple-mutations.create.enabled |
boolean | ❌ Нет | False |
Заметки о свойствах
- Подпаты не допускаются для
pathсвойства. - Используется
depth-limitдля ограничения вложенных запросов. - Установите для
allow-introspectionfalseскрытия схемы GraphQL. - Используется
multiple-mutationsдля вставки нескольких сущностей в одну мутацию.
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)
}
}
}
}
}
Пример: несколько мутаций
Configuration
{
"runtime": {
"graphql": {
"multiple-mutations": {
"create": {
"enabled": true
}
}
}
},
"entities": {
"User": {
"source": "dbo.Users",
"permissions": [
{
"role": "anonymous",
"actions": ["create"] // entity permissions are required
}
]
}
}
}
Мутация 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 (среда выполнения)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
rest |
object | ❌ Нет | - |
Глобальная конфигурация REST.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.rest |
enabled |
boolean | ❌ Нет | None |
runtime.rest |
path |
string | ❌ Нет | "/api" |
runtime.rest |
request-body-strict |
boolean | ❌ Нет | True |
Заметки о свойствах
- Если глобальный
enabledfalse, отдельный уровеньenabledсущности не имеет значения. - Свойство
pathне поддерживает такие значения подпаток, как/api/data. -
request-body-strictбыл представлен для упрощения объектов POCO .NET.
request-body-strict |
Behavior |
|---|---|
true |
Дополнительные поля в тексте BadRequest запроса вызывают исключение. |
false |
Дополнительные поля в тексте запроса игнорируются. |
Format
{
"runtime": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string> (default: /api),
"request-body-strict": <true> (default) | <false>
}
}
}
Пример: request-body-strict
- Столбцы со
default()значением игнорируются только вINSERTтом случае, если их значение в полезных данныхnullравно. В результатеINSERTоперации сdefault()столбцами, когдаrequest-body-strictони естьtrue, не могут привести к явнымnullзначениям. Для выполнения этого поведенияUPDATEтребуется операция. - Столбцы с ней
default()не игнорируются во времяUPDATEнезависимо от значения полезных данных. - Вычисляемые столбцы всегда игнорируются.
- Автоматически созданные столбцы всегда игнорируются.
Пример таблицы
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
);
Тело запроса
{
"Id": 999,
"Name": "Alice",
"Age": null,
"IsAdmin": null,
"IsMinor": false,
"ExtraField": "ignored"
}
Вставка поведения при 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.
Полезная нагрузка ответа
{
"Id": 1, // Auto-generated by the database
"Name": "Alice",
"Age": 18, // Default applied
"IsAdmin": false, // Default applied
"IsMinor": true // Computed
}
Обновление поведения при request-body-strict = false
UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.
Полезная нагрузка ответа
{
"Id": 1,
"Name": "Alice Updated",
"Age": null,
"IsAdmin": false,
"IsMinor": false // Recomputed by the database (false when age is `null`)
}
CORS (среда выполнения узла)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
cors |
object | ❌ Нет | - |
Глобальная конфигурация CORS.
Tip
CORS обозначает "Общий доступ к ресурсам между источниками". Это функция безопасности браузера, которая определяет, могут ли веб-страницы запрашивать домен, отличный от обслуживаемого.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.cors |
allow-credentials |
boolean | ❌ Нет | False |
runtime.host.cors |
origins |
массив строк | ❌ Нет | None |
Note
Свойство allow-credentials задает Access-Control-Allow-Credentials заголовок CORS.
Format
{
"runtime": {
"host": {
"cors": {
"allow-credentials": <true> | <false> (default),
"origins": ["<array-of-strings>"]
}
}
}
}
Note
Подстановочный знак * действителен в качестве значения origins.
Поставщик (среда выполнения узла проверки подлинности)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
provider |
перечисление (Unauthenticated | StaticWebApps | AppService | EntraId | Custom | Simulator) |
❌ Нет | Unauthenticated |
Выбирает метод проверки подлинности. Каждый поставщик проверяет удостоверение по-разному. Пошаговые инструкции по настройке см. в руководствах в следующей таблице.
Note
Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.
Сводка поставщика
| Provider | Сценарий использования | Источник удостоверений | Практическое руководство |
|---|---|---|---|
Unauthenticated |
DAB находится за доверенным интерфейсом (по умолчанию) | Нет— все запросы выполняются как anonymous |
Настройка поставщика без проверки подлинности |
AppService |
Размещенные в Azure приложения (EasyAuth) | Заголовок X-MS-CLIENT-PRINCIPAL |
Настройка проверки подлинности службы приложений |
EntraID |
Идентификатор Microsoft Entra (Azure AD) | Токен носителя JWT | Настройка проверки подлинности идентификатора записи |
Custom |
Сторонние поставщики удостоверений (Okta, Auth0) | Токен носителя JWT | Настройка пользовательской проверки подлинности JWT |
Simulator |
Только локальное тестирование | Симулированный | Настройка проверки подлинности симулятора |
Note
Поставщик EntraId был ранее назван AzureAd. Старое имя по-прежнему работает для совместимости.
Не прошедший проверку подлинности (по умолчанию)
Если Unauthenticated задано (или не указан поставщик), DAB не проверяет и не проверяет JWT. Все запросы выполняются в качестве anonymous роли. Интерфейсная служба, такая как управление API Azure или шлюз приложений, по-прежнему может обрабатывать проверку подлинности или политику доступа, прежде чем запрашивать DAB, но DAB продолжает авторизовать только как anonymous.
Important
Если Unauthenticated активен, а пользовательские роли, определенные в разрешениях сущностей, authenticated никогда не активируются. Если конфигурация содержит эти роли, DAB выдает предупреждение при запуске.
{
"host": {
"authentication": {
"provider": "Unauthenticated"
}
}
}
AppService
Доверяет заголовкам удостоверений, внедренным службой приложений Azure EasyAuth.
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
EntraID
Проверяет токены JWT, выданные идентификатором Microsoft Entra.
{
"host": {
"authentication": {
"provider": "EntraId",
"jwt": {
"audience": "<application-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
Custom
Проверяет маркеры JWT от сторонних поставщиков удостоверений.
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<api-audience>",
"issuer": "https://<your-idp-domain>/"
}
}
}
}
Симулятор
Имитирует проверку подлинности для локальной разработки и тестирования.
{
"host": {
"authentication": {
"provider": "Simulator"
}
}
}
Important
Поставщик Simulator работает только в том runtime.host.modeслучаеdevelopment. DAB не запускается, если симулятор настроен в рабочем режиме.
Выбор роли
Для всех поставщиков, кроме симулятора, X-MS-API-ROLE заголовок выбирает роль, используемую из утверждений пользователя, прошедших проверку подлинности. Если опущено, запрос использует системную Authenticated роль. Дополнительные сведения об оценке ролей см. в обзоре авторизации.
JWT (среда выполнения узла проверки подлинности)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
jwt |
object | ❌ Нет | - |
Конфигурация глобального веб-маркера JSON (JWT).
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication.jwt |
audience |
string | ✔️ Да* | None |
runtime.host.authentication.jwt |
issuer |
string | ✔️ Да* | None |
audience* Оба и issuer обязательны, когда jwt объект присутствует. Сам jwt объект требуется, если поставщик имеет EntraIDзначение , AzureADили Custom.
Format
{
"runtime": {
"host": {
"authentication": {
"jwt": {
"audience": "<client-id>",
"issuer": "<issuer-url>"
}
}
}
}
}
Разбиение на страницы (среда выполнения)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
pagination |
object | ❌ Нет | - |
Глобальные ограничения на страницы для конечных точек REST и GraphQL.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.pagination |
max-page-size |
int | ❌ Нет | 100,000 |
runtime.pagination |
default-page-size |
int | ❌ Нет | 100 |
runtime.pagination |
next-link-relative |
boolean | ❌ Нет | false |
Поддерживаемые значения максимального размера страницы
| Value | Result |
|---|---|
integer |
Поддерживается любое 32-разрядное целое число. |
0 |
Не поддерживается. |
-1 |
По умолчанию используется максимальное поддерживаемое значение. |
< -1 |
Не поддерживается. |
Поддерживаемые значения размера страницы по умолчанию
| Value | Result |
|---|---|
integer |
Любое положительное целое число меньше текущего max-page-size. |
0 |
Не поддерживается. |
-1 |
По умолчанию используется текущий параметр max-page-size. |
< -1 |
Не поддерживается. |
Относительное поведение next-link
Если next-link-relative это trueтак, значения разбиения nextLink на страницы используют относительные URL-адреса вместо абсолютных URL-адресов.
| Value | Example |
|---|---|
false (по умолчанию) |
"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
Если значение больше max-page-size, результаты будут ограничены max-page-size.
Пример: разбиение по страницам в REST
Request
GET https://localhost:5001/api/users
Полезная нагрузка ответа
{
"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=="
}
Следующая страница запроса
GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==
Пример. Разбиение по страницам в GraphQL
Полезные данные запроса (запрос)
query {
users {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Полезная нагрузка ответа
{
"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=="
}
}
}
Следующая страница запроса
query {
users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Пример: доступ к запросам max-page-size
Используйте значение, задав max-page-size для параметра $limit REST или first (GraphQL).-1
REST
GET https://localhost:5001/api/users?$limit=-1
GraphQL
query {
users(first: -1) {
items {
...
}
}
}
Сжатие (среда выполнения)
Note
Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
compression |
object | ❌ Нет | - |
Конфигурация сжатия http-ответа. Если этот параметр включен, DAB сжимает тела ответа, чтобы уменьшить размеры полезных данных и повысить скорость передачи.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.compression |
level |
string | ❌ Нет | "optimal" |
Поддерживаемые значения для level
| Value | Description | Экономия сжатия | Влияние на производительность |
|---|---|---|---|
optimal |
Балансирует соотношение и скорость (по умолчанию) | Gzip: 90,5% / Brotli: 92.2% | Умеренное использование ЦП, увеличение задержки |
fastest |
Приоритеты скорости по отношению | Gzip: 89.8% / Brotli: 91.1% | Низкая загрузка ЦП, минимальная задержка |
none |
Без сжатия | 0% (базовый план: 12 673 байта) | None |
Заголовки HTTP клиента
Сжатие вызывается заголовком клиента Accept-Encoding . Поддерживаются алгоритмы Gzip и Brotli. Параметр level настраивает стратегию сжатия, если клиент и сервер поддерживают несколько алгоритмов.
Поддерживаемые заголовки
| Заголовок HTTP | Используемый алгоритм |
|---|---|
Accept-Encoding: gzip |
Gzip |
Accept-Encoding: br |
Бротли |
Format
{
"runtime": {
"compression": {
"level": <"optimal"> (default) | <"fastest"> | <"none">
}
}
}
Example
{
"runtime": {
"compression": {
"level": "optimal"
}
}
}
Кэш (среда выполнения)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
cache |
object | ❌ Нет | - |
Конфигурация глобального кэша.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache |
enabled |
boolean | ❌ Нет | False |
runtime.cache |
ttl-seconds |
integer | ❌ Нет | 5 |
runtime.cache |
level-2 |
object | ❌ Нет | - |
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache.level-2 |
enabled |
boolean | ❌ Нет | False |
runtime.cache.level-2 |
provider |
string | ❌ Нет | redis |
runtime.cache.level-2 |
connection-string |
string | ❌ Нет | None |
runtime.cache.level-2 |
partition |
string | ❌ Нет | None |
Tip
Свойство уровня cache.ttl-seconds сущности по умолчанию используется для этого глобального значения.
Tip
Примеры комплексной настройки, поведения на уровне кэша и Redis см. в разделе "Реализация кэша уровня 2".
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>,
"level-2": {
"enabled": <boolean>,
"provider": "redis",
"connection-string": <string>,
"partition": <string>
}
}
}
}
Important
Если глобальный enabledfalse, отдельный уровень enabled сущности не имеет значения.
Если level-2.enabled это trueтак, DAB использует настроенный поставщик распределенного кэша в дополнение к локальному кэшу в памяти. Сущность, настроенная на уровне L1L2 кэша, сначала проверяет локальный кэш, а затем распределенный кэш перед переходом в базу данных.
Телеметрия (среда выполнения)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
telemetry |
object | ❌ Нет | - |
Глобальная конфигурация телеметрии.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
log-level |
dictionary | ❌ Нет | None |
runtime.telemetry |
application-insights |
object | ❌ Нет | - |
runtime.telemetry |
open-telemetry |
object | ❌ Нет | - |
runtime.telemetry |
azure-log-analytics |
object | ❌ Нет | - |
runtime.telemetry |
file |
object | ❌ Нет | - |
Настраивает детализацию ведения журнала для каждого пространства имен. Эта конфигурация соответствует стандартным соглашениям по ведению журнала .NET и позволяет детализировать управление, хотя предполагается, что некоторые знания о внутренних компонентах построитель API данных. Построитель API данных — это открытый исходный код: https://aka.ms/dab
Format
{
"runtime": {
"telemetry": {
"log-level": {
"namespace": "log-level",
"namespace": "log-level"
}
}
}
}
Tip
log-level можно перезагрузить как в разработке, так и в рабочей среде. В настоящее время это единственное свойство, которое поддерживает горячую перезагрузку в рабочей среде.
Example
{
"runtime": {
"telemetry": {
"log-level": {
"Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
"Azure.DataApiBuilder.Core": "information",
"default": "warning"
}
}
}
}
Application Insights (телеметрия)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
application-insights |
object | ❌ Нет | - |
Настраивает ведение журнала в Application Insights.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.application-insights |
enabled |
boolean | ❌ Нет | true |
runtime.telemetry.application-insights |
connection-string |
string | ✔️ Да | None |
Format
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": <true; default: true> | <false>
"connection-string": <string>
}
}
}
}
OpenTelemetry (телеметрия)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
open-telemetry |
object | ❌ Нет | - |
Настраивает ведение журнала для Open Telemetry.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.open-telemetry |
enabled |
boolean | ❌ Нет | true |
runtime.telemetry.open-telemetry |
endpoint |
string | ✔️ Да | None |
runtime.telemetry.open-telemetry |
headers |
string | ❌ Нет | None |
runtime.telemetry.open-telemetry |
service-name |
string | ❌ Нет | "dab" |
runtime.telemetry.open-telemetry |
exporter-protocol |
перечисление (grpc | httpprotobuf) |
❌ Нет | grpc |
Несколько заголовков разделены , запятыми.
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",
}
}
}
}
Дополнительные сведения о OTEL_EXPORTER_OTLP_HEADERS.
Note
gRPC (4317) быстрее и поддерживает потоковую передачу, но требует дополнительных действий по настройке. HTTP/protobuf (4318) проще и проще отлаживать, но менее эффективно.
Azure Log Analytics (телеметрия)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
azure-log-analytics |
object | ❌ Нет | - |
Настраивает ведение журнала в Azure Log Analytics с помощью конечной точки сбора данных. При включении DAB отправляет данные телеметрии в пакетах с настраиваемым интервалом.
Note
Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics |
enabled |
boolean | ❌ Нет | false |
runtime.telemetry.azure-log-analytics |
dab-identifier |
string | ❌ Нет | "DabLogs" |
runtime.telemetry.azure-log-analytics |
flush-interval-seconds |
integer | ❌ Нет | 5 |
runtime.telemetry.azure-log-analytics |
auth |
object | ✔️ Да* | - |
*
auth является обязательным, если enabled имеет значение true.
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.azure-log-analytics.auth |
custom-table-name |
string | ✔️ Да* | null |
runtime.telemetry.azure-log-analytics.auth |
dcr-immutable-id |
string | ✔️ Да* | null |
runtime.telemetry.azure-log-analytics.auth |
dce-endpoint |
string | ✔️ Да* | null |
* Обязательный, если enabled имеет значение true.
-
dab-identifier— метка, переданная в Log Analytics, чтобы отличить журналы, поступающие из построителя API данных. -
flush-interval-seconds— интервал времени (в секундах) между отправкой пакетов данных телеметрии. -
custom-table-name— имя настраиваемой таблицы в Azure Log Analytics, в которой хранятся данные. -
dcr-immutable-id— неизменяемый идентификатор правила сбора данных, определяющего способ сбора данных. -
dce-endpoint— URL-адрес конечной точки сбора данных, используемый для отправки данных телеметрии.
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"
}
}
}
}
}
Файл (телеметрия)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
file |
object | ❌ Нет | - |
Настраивает запись журналов телеметрии в локальный файл. При включении DAB записывает структурированные выходные данные журнала в указанный путь к файлу с настраиваемыми интервалами и ограничениями размера.
Note
Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.file |
enabled |
boolean | ❌ Нет | false |
runtime.telemetry.file |
path |
string | ✔️ Да* | "/logs/dab-log.txt" |
runtime.telemetry.file |
rolling-interval |
перечисление | ❌ Нет | "Day" |
runtime.telemetry.file |
retained-file-count-limit |
integer | ❌ Нет | 1 |
runtime.telemetry.file |
file-size-limit-bytes |
integer | ❌ Нет | 1048576 |
*
path является обязательным, если enabled имеет значение true.
Значения скользящего интервала
| Value | Description |
|---|---|
Minute |
Новый файл журнала каждую минуту |
Hour |
Новый файл журнала каждый час |
Day |
Новый файл журнала каждый день (по умолчанию) |
Month |
Новый файл журнала каждый месяц |
Year |
Новый файл журнала каждый год |
Infinite |
Никогда не развертывать новый файл |
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 (среда выполнения)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
mcp |
object | ❌ Нет | - |
Настраивает сервер протокола контекста модели SQL (MCP), который предоставляет сущности базы данных в качестве средств MCP для агентов ИИ.
Note
Функции построителя данных 2.0, описанные в этом разделе, находятся в предварительной версии и могут измениться до общедоступной доступности. Дополнительные сведения см. в статье "Новые возможности" версии 2.0.
Вложенные свойства
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.mcp |
enabled |
boolean | ❌ Нет | true |
runtime.mcp |
path |
string | ❌ Нет | "/mcp" |
runtime.mcp |
description |
string | ❌ Нет | null |
runtime.mcp |
dml-tools |
логический или объект | ❌ Нет | true |
Свойство dml-tools принимает логическое значение для включения или отключения всех инструментов или объекта для управления отдельными инструментами:
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.mcp.dml-tools |
describe-entities |
boolean | ❌ Нет | true |
runtime.mcp.dml-tools |
create-record |
boolean | ❌ Нет | true |
runtime.mcp.dml-tools |
read-records |
boolean | ❌ Нет | true |
runtime.mcp.dml-tools |
update-record |
boolean | ❌ Нет | true |
runtime.mcp.dml-tools |
delete-record |
boolean | ❌ Нет | true |
runtime.mcp.dml-tools |
execute-entity |
boolean | ❌ Нет | true |
runtime.mcp.dml-tools |
aggregate-records |
логический или объект | ❌ Нет | true |
Средство aggregate-records принимает логическое значение или объект с дополнительными параметрами:
| Parent | Property | Type | Required | Default | Диапазон |
|---|---|---|---|---|---|
runtime.mcp.dml-tools.aggregate-records |
enabled |
boolean | ❌ Нет | true |
|
runtime.mcp.dml-tools.aggregate-records |
query-timeout |
integer | ❌ Нет | 30 |
1–600 секунд |
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
}
}
}
}
}
Чтобы включить или отключить все средства DML одновременно, установите "dml-tools"true или falseотключите их.
При отключении средства на уровне среды выполнения средство никогда не отображается в ответе MCP tools/list и не может вызываться независимо от разрешений на уровне сущности. Дополнительные сведения о отдельных средствах DML см. в разделе "Язык обработки данных" (DML).
Использование интерфейса командной строки
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
Работоспособность (среда выполнения)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
health |
object | ❌ Нет | - |
Конфигурация конечной точки глобальной проверки работоспособности (/health).
Вложенные свойства
| Parent | Property | Type | Required | Default | Диапазон и заметки |
|---|---|---|---|---|---|
runtime.health |
enabled |
boolean | ❌ Нет | true |
|
runtime.health |
roles |
массив строк | ✔️ Да* | null |
*Обязательный в рабочем режиме |
runtime.health |
cache-ttl-seconds |
integer | ❌ Нет | 5 |
Мин: 0 |
runtime.health |
max-query-parallelism |
integer | ❌ Нет | 4 |
Min: One, Max: Восемь (зажато) |
Поведение в разработке и рабочей среде
| Condition | Поведение разработки | Поведение рабочей среды |
|---|---|---|
health.enabled = ложь |
403 статус |
403 статус |
health.enabled = верно |
Зависит от роли | Зависит от роли |
roles опущен или null |
Отображается работоспособности |
403 статус |
текущая роль не в roles |
403 статус |
403 статус |
текущая роль в roles |
Отображается работоспособности | Отображается работоспособности |
roles Включает anonymous |
Отображается работоспособности | Отображается работоспособности |
Format
{
"health": {
"enabled": <true> (default) | <false>,
"roles": [ <string> ], // required in production
"cache-ttl-seconds": <integer; default: 5>,
"max-query-parallelism": <integer; default: 4>
}
}
Note
Если глобальный enabledfalse, отдельный уровень enabled сущности не имеет значения.
Example
{
"health": {
"enabled": true,
"roles": ["admin", "support"],
"cache-ttl-seconds": 10,
"max-query-parallelism": 6
}
}