Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Параметры конфигурации, определяющие поведение среды выполнения.
Параметры разбиения на страницы
| 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
}
}