Поделиться через


Справочник по схеме конфигурации построителя данных

Построителю данных требуется по крайней мере один файл конфигурации. Этот файл на основе JSON определяет настройку API, от параметров среды до определений сущностей. Он начинается со $schema свойства, которое включает проверку схемы для остальной части файла.

Свойства верхнего уровня

Property Description
$schema URI схемы JSON для этой конфигурации.
источник данных Объект, содержащий параметры подключения к базе данных.
файлы источника данных Массив других путей к файлу конфигурации.
runtime Объект, настраивающий поведение среды выполнения.
entities Объект, определяющий все сущности, предоставляемые с помощью REST или GraphQL.
autoentities Объект, определяющий правила на основе шаблонов, которые автоматически предоставляют соответствующие объекты базы данных в качестве сущностей (только MSSQL).
azure-key-vault Конфигурация Azure Key Vault для управления секретами.

Свойства источника данных

Property Description
источник данных Объект, содержащий параметры подключения к базе данных.
тип data-source.database Тип базы данных, используемый в серверной части (mssql, postgresql, mysql, cosmosdb_nosql, cosmosdb_postgresql).
data-source.connection-string Строка подключения для выбранного типа базы данных.
data-source.options Параметры для конкретной базы данных и дополнительные параметры.
data-source.health Конфигурация проверки работоспособности источника данных.
файлы источника данных Массив других путей к файлу конфигурации.

Свойства среды выполнения

Property Description
runtime Объект, настраивающий поведение среды выполнения.
runtime.pagination Параметры разбиения на страницы для ответов API.
runtime.rest Глобальная конфигурация REST API.
runtime.graphql Глобальная конфигурация API GraphQL.
runtime.cache Конфигурация кэширования глобальных ответов.
runtime.compression Конфигурация сжатия http-ответа.
runtime.mcp Глобальная конфигурация протокола контекста модели (MCP).
runtime.telemetry Конфигурация телеметрии, ведения журнала и мониторинга.
runtime.health Конфигурация глобальной проверки работоспособности.

Свойства сущностей

Property Description
entities Объект, определяющий все сущности, предоставляемые с помощью REST или GraphQL.
entity.entity-name.source Сведения об источнике базы данных для сущности.
entity.entity-name.rest Конфигурация REST API для сущности.
entity.entity-name.graphql Конфигурация API GraphQL для сущности.
entity.entity-name.permissions Разрешения и управление доступом для сущности.
entity.entity-name.relationships Связи с другими сущностями.
entity.entity-name.cache Конфигурация кэширования на уровне сущности.
entity.entity-name.health Конфигурация проверки работоспособности на уровне сущностей.
entity.entity-name.mcp Конфигурация MCP на уровне сущности.
entity.entity-name.fields Метаданные полей, псевдонимы и обозначения первичных ключей.
entity.entity-name.description Описание сущности, доступной для чтения человеком.

Schema

Parent Property Type Required Default
$root $schema string ✔️ Да None

Каждый файл конфигурации начинается со $schema свойства, указывая схему JSON для проверки.

Format

{
  "$schema": <string>
}

Example

{
  "$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json"
}

Tip

Последняя схема всегда доступна по https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.jsonадресу.

Versioning

Файлы схемы доступны по определенным URL-адресам, гарантируя, что вы можете использовать правильную версию или последнюю доступную схему.

https://github.com/Azure/data-api-builder/releases/download/<VERSION>-<suffix>/dab.draft.schema.json

Замените VERSION-suffix нужной версией.

https://github.com/Azure/data-api-builder/releases/download/v0.3.7-alpha/dab.draft.schema.json

Файлы источника данных

Parent Property Type Required Default
$root data-source-files массив строк ❌ Нет None

Построитель данных поддерживает несколько файлов конфигурации, а один — в качестве параметров управления файлами runtime верхнего уровня. Все конфигурации используют одну и ту же схему JSON, разрешая runtime параметры в любом или каждом файле без ошибок. Разделение сущностей для лучшей организации.

Схема нескольких файлов конфигурации, на которые ссылается массив в одном файле конфигурации.

Format

{
  "data-source-files": [ "<string>" ]
}

Несколько правил конфигурации

  • Каждый файл конфигурации должен содержать свойство data-source.
  • Каждый файл конфигурации должен содержать entities свойство (или autoentities).
  • Конфигурация верхнего уровня должна включать runtime.
  • Дочерние конфигурации могут включать в себя runtime, но построитель API данных игнорирует его.
  • Дочерние файлы конфигурации могут включать собственные дочерние файлы.
  • Файлы конфигурации можно упорядочить в вложенные папки.
  • Имена сущностей должны быть уникальными во всех файлах конфигурации.
  • Связи между сущностями в разных файлах конфигурации не поддерживаются.

Examples

{
  "data-source-files": [
    "dab-config-2.json",
    "my-folder/dab-config-3.json",
    "my-folder/my-other-folder/dab-config-4.json"
  ]
}

Автоматическое заполнение

Parent Property Type Required Default
$root autoentities объект ❌ Нет None

В autoentities этом разделе определяются правила на основе шаблонов, которые автоматически предоставляют соответствующие объекты базы данных в виде сущностей DAB при запуске. Каждый ключ в объекте — это именованное определение, содержащее шаблоны, шаблон и разрешения.

Это важно

Автоматическое использование в настоящее время поддерживает только источники данных MSSQL .

Когда autoentities он присутствует, раздел entities больше не требуется. Схема конфигурации разрешает либо autoentities (или и то, и entities другое). Если оба имеются, явно определенные сущности имеют приоритет над автоматическими совпадениями с одинаковым именем.

Format

{
  "autoentities": {
    "<definition-name>": {
      "patterns": {
        "include": [ "<string>" ],
        "exclude": [ "<string>" ],
        "name": "<string>"
      },
      "template": {
        "mcp": { "dml-tools": <boolean> },
        "rest": { "enabled": <boolean> },
        "graphql": { "enabled": <boolean> },
        "health": { "enabled": <boolean> },
        "cache": {
          "enabled": <boolean>,
          "ttl-seconds": <integer>,
          "level": "<string>"
        }
      },
      "permissions": [
        {
          "role": "<string>",
          "actions": [ { "action": "<string>" } ]
        }
      ]
    }
  }
}

Свойства

Property Type Required Default Description
patterns объект ✔️ Да None Определяет правила включения, исключения и именования.
patterns.include массив строк ❌ Нет ["%.%"] Шаблоны MSSQL LIKE для объектов, которые необходимо включить.
patterns.exclude массив строк ❌ Нет null Шаблоны MSSQL LIKE для исключения объектов.
patterns.name string ❌ Нет "{object}" Шаблон интерполяции с помощью {schema} и {object}.
template объект ❌ Нет None Конфигурация по умолчанию применяется ко всем соответствующим сущностям.
template.mcp объект ❌ Нет None Параметры MCP для сопоставленных сущностей.
template.mcp.dml-tools булевый ❌ Нет true Включите средства языка обработки данных MCP (DML).
template.rest объект ❌ Нет None Параметры REST для сопоставленных сущностей.
template.rest.enabled булевый ❌ Нет true Включите конечные точки REST.
template.graphql объект ❌ Нет None Параметры GraphQL для сопоставленных сущностей.
template.graphql.enabled булевый ❌ Нет true Включите GraphQL.
template.health объект ❌ Нет None Параметры проверки работоспособности для соответствующих сущностей.
template.health.enabled булевый ❌ Нет false Включите проверки работоспособности.
template.cache объект ❌ Нет None Параметры кэша для сопоставленных сущностей.
template.cache.enabled булевый ❌ Нет false Включите кэширование ответов.
template.cache.ttl-seconds целое число ❌ Нет null Кэшируйте время в секундах.
template.cache.level string ❌ Нет "L1L2" Уровень кэша.
permissions массив ❌ Нет None Разрешения, применяемые ко всем соответствующим сущностям.

Example

{
  "autoentities": {
    "my-def": {
      "patterns": {
        "include": [ "dbo.%" ],
        "exclude": [ "dbo.internal%" ],
        "name": "{schema}_{object}"
      },
      "template": {
        "rest": { "enabled": true },
        "graphql": { "enabled": true },
        "cache": { "enabled": true, "ttl-seconds": 30, "level": "l1l2" }
      },
      "permissions": [
        { "role": "anonymous", "actions": [ { "action": "read" } ] }
      ]
    }
  }
}

При этой конфигурации каждая таблица и представление схемы dbo (за исключением совпадающих dbo.internal%) автоматически предоставляется как сущность DAB. Каждая сущность называется с помощью {schema}_{object} шаблона (например, dbo_Productsс поддержкой REST и GraphQL), использует кэширование с 30-секундным временем жизни (TTL) и предоставляет read доступ к anonymous роли.

Tip

Используется dab auto-config для создания определений автоентий из интерфейса командной строки и dab auto-config-simulate предварительного просмотра того, какие объекты соответствуют перед фиксацией изменений. Дополнительные сведения см. в новых возможностях версии 2.0.

Azure Key Vault

Parent Property Type Required Default
$root azure-key-vault объект ❌ Нет None

Настраивает интеграцию Azure Key Vault для управления секретами. При наличии endpoint свойства требуется.

Вложенные свойства

Parent Property Type Required Default
azure-key-vault endpoint string ✔️ Да None
azure-key-vault retry-policy объект ❌ Нет None
Parent Property Type Required Default
azure-key-vault.retry-policy mode перечисление (fixed | exponential) ❌ Нет "exponential"
azure-key-vault.retry-policy max-count целое число ❌ Нет 3
azure-key-vault.retry-policy delay-seconds целое число ❌ Нет 1
azure-key-vault.retry-policy max-delay-seconds целое число ❌ Нет 60
azure-key-vault.retry-policy network-timeout-seconds целое число ❌ Нет 60

Чтобы ссылаться на секреты, хранящиеся в Azure Key Vault, используйте функцию @akv() в значениях конфигурации. Построитель API данных разрешает эти ссылки при запуске с помощью настроенной конечной точки.

Format

{
  "azure-key-vault": {
    "endpoint": "<string>",
    "retry-policy": {
      "mode": <"exponential"> (default) | <"fixed">,
      "max-count": <integer; default: 3>,
      "delay-seconds": <integer; default: 1>,
      "max-delay-seconds": <integer; default: 60>,
      "network-timeout-seconds": <integer; default: 60>
    }
  }
}

Example

{
  "azure-key-vault": {
    "endpoint": "https://my-vault.vault.azure.net/",
    "retry-policy": {
      "mode": "exponential",
      "max-count": 5,
      "delay-seconds": 2,
      "max-delay-seconds": 120,
      "network-timeout-seconds": 90
    }
  },
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@akv('sql-connection-string')"
  }
}