Compartilhar via


Runtime

Configurações que determinam o comportamento do runtime.

Configurações de paginação

Property Default Description
tamanho da página runtime.pagination.max Define o máximo de registros por página
runtime.pagination.default-page-size Define registros padrão por resposta

Configurações REST

Property Default Description
runtime.rest.path "/api" Caminho base para pontos de extremidade REST
runtime.rest.enabled true Permite habilitar ou desabilitar solicitações REST para todas as entidades
runtime.rest.request-body-strict true Não permite campos desnecessários no corpo da solicitação quando verdadeiro

Configurações do GraphQL

Property Default Description
runtime.graphql.allow-introspection true Permite a consulta do esquema GraphQL subjacente
runtime.graphql.path "/graphql" Caminho base para o ponto de extremidade do GraphQL
runtime.graphql.enabled true Permite habilitar ou desabilitar solicitações do GraphQL para todas as entidades
runtime.graphql.depth-limit null Profundidade máxima permitida de uma consulta GraphQL
runtime.graphql.multiple-mutações.create.enabled false Permite mutações de criação múltipla para todas as entidades

Configurações de host

Property Default Description
runtime.host.max-response-size-mb 158 Tamanho máximo (MB) da resposta do banco de dados permitida em um único resultado
runtime.host.mode "production" Modo de execução; "production" ou "development"

Configurações do CORS

Property Default Description
runtime.host.cors.origins [] Origens de CORS permitidas
runtime.host.cors.allow-credentials false Define o valor do cabeçalho access-control-Allow-Credentials

Configurações de autenticação

Property Default Description
runtime.host.authentication.provider Unauthenticated Provedor de autenticação
runtime.host.authentication.jwt.audience null Público-alvo do JWT
runtime.host.authentication.jwt.issuer null Emissor JWT

Configurações de cache

Property Default Description
runtime.cache.enabled false Habilita o cache de respostas globalmente
runtime.cache.ttl-seconds 5 Tempo de vida útil (segundos) para o cache global
runtime.cache.level-2.enabled false Habilita o cache de nível 2 distribuído globalmente
runtime.cache.level-2.provider "redis" Provedor de cache distribuído para cache de nível 2
runtime.cache.level-2.connection-string null Cadeia de conexão para o provedor de cache de nível 2
runtime.cache.level-2.partition null Nome da partição opcional para isolar o espaço em cache distribuído

Configurações de compactação

Property Default Description
runtime.compression.level optimal Nível de compactação de resposta HTTP (optimalou fastestnone)

Configurações de telemetria

Property Default Description
runtime.telemetry.application-insights.connection-string null Cadeia de conexão do Application Insights
runtime.telemetry.application-insights.enabled true Habilita ou desabilita a telemetria do Application Insights
runtime.telemetry.open-telemetry.endpoint null URL do coletor OpenTelemetry
runtime.telemetry.open-telemetry.headers {} Cabeçalhos de exportação OpenTelemetry
runtime.telemetry.open-telemetry.service-name "dab" Nome do serviço OpenTelemetry
runtime.telemetry.open-telemetry.exporter-protocol "grpc" Protocolo OpenTelemetry ("grpc" ou "httpprotobuf")
runtime.telemetry.open-telemetry.enabled true Habilita ou desabilita o OpenTelemetry
runtime.telemetry.open-telemetry.enabled true Habilita ou desabilita o OpenTelemetry
runtime.telemetry.azure-log-analytics.enabled false Habilita ou desabilita o Azure Log Analytics
runtime.telemetry.azure-log-analytics.dab-identifier "DabLogs" Identificador do DAB no Azure Log Analytics
runtime.telemetry.azure-log-analytics.flush-interval-seconds 5 Intervalo entre pushes do lote de log (segundos)
runtime.telemetry.azure-log-analytics.auth.custom-table-name null Nome da tabela personalizada para o Azure Log Analytics
runtime.telemetry.azure-log-analytics.auth.dcr-immutable-id null ID imutável da regra de coleta de dados
runtime.telemetry.azure-log-analytics.auth.dce-endpoint null URL do ponto de extremidade de coleta de dados
runtime.telemetry.file.enabled false Habilita ou desabilita o registro em log do coletor de arquivos
runtime.telemetry.file.path "/logs/dab-log.txt" Caminho do arquivo para logs de telemetria
runtime.telemetry.file.rolling-interval "Day" Intervalo de rolagem para arquivos de log
runtime.telemetry.file.retained-file-count-limit 1 Número máximo de arquivos de log retidos
runtime.telemetry.file.file-size-limit-bytes 1048576 Tamanho máximo do arquivo em bytes antes de rolar
runtime.telemetry.log-level.namespace null Substituição do nível de log específico do namespace
runtime.health.enabled true Habilita ou desabilita o ponto de extremidade de verificação de integridade globalmente
runtime.health.roles null Funções permitidas para o ponto de extremidade de integridade abrangente
runtime.health.cache-ttl-seconds 5 Tempo de vida útil (segundos) para a entrada do cache do relatório de verificação de integridade
runtime.health.max-query-parallelism 4 Consultas de verificação de integridade simultânea máximas (intervalo: 1 a 8)

Configurações do MCP

Property Default Description
runtime.mcp.enabled true Habilita ou desabilita o ponto de extremidade MCP globalmente
runtime.mcp.path "/mcp" Caminho base para o ponto de extremidade MCP
runtime.mcp.description null Descrição do servidor enviada para clientes MCP durante a inicialização
runtime.mcp.dml-tools true Habilita ou desabilita todas as ferramentas DML ou um objeto para controle por ferramenta
runtime.mcp.dml-tools.describe-entities true Habilita a ferramenta describe_entities
runtime.mcp.dml-tools.create-record true Habilita a ferramenta create_record
runtime.mcp.dml-tools.read-records true Habilita a ferramenta read_records
runtime.mcp.dml-tools.update-record true Habilita a ferramenta update_record
runtime.mcp.dml-tools.delete-record true Habilita a ferramenta delete_record
runtime.mcp.dml-tools.execute-entity true Habilita a ferramenta execute_entity
runtime.mcp.dml-tools.aggregate-records true Habilita a ferramenta aggregate_records (booliano ou objeto com tempo limite de consulta)

Visão geral do formato

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

Modo (runtime do host)

Parent Property Tipo Required Default
runtime host enumeração (production | development) ❌ Não production

Comportamento de desenvolvimento

  • Nitro habilitado (anteriormente Banana Cake Pop) para teste do GraphQL
  • Interface do usuário do Swagger habilitada para teste REST
  • Verificações de integridade anônimas habilitadas
  • Maior verbosidade de registro em log (Depuração)

Format

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

Tamanho máximo da resposta (runtime do host)

Parent Property Tipo Required Default
runtime.host max-response-size-mb inteiro ❌ Não 158

Define o tamanho máximo (em megabytes) para qualquer resultado especificado. Como respostas grandes podem forçar o sistema, max-response-size-mb limita o tamanho total (diferente da contagem de linhas) para evitar sobrecarga, que é especialmente com colunas grandes, como texto ou JSON.

Value Result
não definido Usar padrão
null Usar padrão
integer Qualquer inteiro positivo de 32 bits
<= 0 Sem suporte

Format

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

GraphQL (runtime)

Parent Property Tipo Required Default
runtime graphql objeto ❌ Não -

Configuração global do GraphQL.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.graphql enabled boolean ❌ Não None
runtime.graphql path cadeia ❌ Não "/graphql"
runtime.graphql depth-limit inteiro ❌ Não Nenhum (ilimitado)
runtime.graphql allow-introspection boolean ❌ Não True
runtime.graphql multiple-mutations.create.enabled boolean ❌ Não False

Notas de propriedade

  • Os subcaminhos não são permitidos para a path propriedade.
  • Use depth-limit para restringir consultas aninhadas.
  • Defina allow-introspection para false ocultar o esquema GraphQL.
  • Use multiple-mutations para inserir várias entidades em uma única mutação.

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

Exemplo: várias mutações

Configuration

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

Mutação do 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 (tempo de execução)

Parent Property Tipo Required Default
runtime rest objeto ❌ Não -

Configuração REST global.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.rest enabled boolean ❌ Não None
runtime.rest path cadeia ❌ Não "/api"
runtime.rest request-body-strict boolean ❌ Não True

Notas de propriedade

  • Se global enabled for false, o nível enabled de entidade individual não importará.
  • A path propriedade não dá suporte a valores de subcaminho como /api/data.
  • request-body-strict foi introduzido para ajudar a simplificar objetos POCO do .NET.
request-body-strict Behavior
true Campos extras no corpo da solicitação causam uma BadRequest exceção.
false Campos extras no corpo da solicitação são ignorados.

Format

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

Exemplo: request-body-strict

  • As colunas com um default() valor são ignoradas somente durante INSERT quando o valor na carga é null. Como consequência, INSERT as operações em default() colunas, quando request-body-strict estiverem true, não podem resultar em valores explícitos null . Para realizar esse comportamento, uma UPDATE operação é necessária.
  • As colunas com um default() não são ignoradas durante UPDATE , independentemente do valor da carga.
  • As colunas computadas são sempre ignoradas.
  • Colunas geradas automaticamente são sempre ignoradas.

Tabela de exemplo

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

Conteúdo da solicitação

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

Inserir comportamento quando 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.

Payload da resposta

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

Atualizar o comportamento quando request-body-strict = false

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

Payload da resposta

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

CORS (runtime do host)

Parent Property Tipo Required Default
runtime.host cors objeto ❌ Não -

Configuração global do CORS.

Tip

CORS significa "Compartilhamento de recursos entre origens". É um recurso de segurança do navegador que controla se as páginas da Web podem fazer solicitações para um domínio diferente daquele que as serviu.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.host.cors allow-credentials boolean ❌ Não False
runtime.host.cors origins Matriz de cadeia de caracteres ❌ Não None

Note

A allow-credentials propriedade define o Access-Control-Allow-Credentials cabeçalho CORS.

Format

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

Note

O curinga * é válido como um valor para origins.

Provedor (runtime do host de autenticação)

Parent Property Tipo Required Default
runtime.host.authentication provider enumeração (Unauthenticated | StaticWebApps | AppService | EntraId | Custom | Simulator) ❌ Não Unauthenticated

Seleciona o método de autenticação. Cada provedor valida a identidade de forma diferente. Para obter a configuração passo a passo, consulte os guias de instruções na tabela a seguir.

Note

A funcionalidade do Construtor de API de Dados 2.0 descrita nesta seção está atualmente em versão prévia e pode ser alterada antes da disponibilidade geral. Para obter mais informações, consulte o que há de novo na versão 2.0.

Resumo do provedor

Fornecedor Caso de uso Origem da identidade Guia de instruções
Unauthenticated O DAB fica atrás de um front-end confiável (padrão) Nenhum – todas as solicitações são executadas como anonymous Configurar o provedor não autenticado
AppService Aplicativos hospedados no Azure (EasyAuth) X-MS-CLIENT-PRINCIPAL cabeçalho Configurar a autenticação do Serviço de Aplicativo
EntraID Microsoft Entra ID (Azure AD) Token de portador JWT Configurar autenticação do Entra ID
Custom IdPs de terceiros (Okta, Auth0) Token de portador JWT Configurar a autenticação JWT personalizada
Simulator Somente testes locais Simulado Configurar a autenticação do Simulador

Note

O EntraId provedor foi nomeado AzureAdanteriormente. O nome antigo ainda funciona para compatibilidade.

Não autenticado (padrão)

Quando Unauthenticated é definido (ou nenhum provedor é especificado), o DAB não inspeciona nem valida qualquer JWT. Todas as solicitações são executadas como a anonymous função. Um serviço front-end, como o Gerenciamento de API do Azure ou um gateway de aplicativo, ainda pode lidar com a autenticação ou a política de acesso antes que as solicitações cheguem ao DAB, mas o DAB continua autorizando apenas como anonymous.

Important

Quando Unauthenticated estiver ativo e authenticated as funções personalizadas definidas em permissões de entidade nunca forem ativadas. Se a configuração contiver essas funções, o DAB emitirá um aviso na inicialização.

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

AppService

Confia em cabeçalhos de identidade injetados pelo EasyAuth do Serviço de Aplicativo do Azure.

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

EntraID

Valida tokens JWT emitidos pela ID do Microsoft Entra.

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

Personalizado

Valida tokens JWT de provedores de identidade de terceiros.

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

Simulador

Simula a autenticação para desenvolvimento e teste local.

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

Important

O Simulator provedor só funciona quando runtime.host.mode é development. O DAB falhará ao iniciar se o Simulador estiver configurado no modo de produção.

Seleção de função

Para todos os provedores, exceto Simulador, o X-MS-API-ROLE cabeçalho seleciona qual função usar nas declarações do usuário autenticado. Se omitida, a solicitação usará a função do Authenticated sistema. Para obter detalhes sobre a avaliação de função, consulte a visão geral de autorização.

JWT (runtime do host de autenticação)

Parent Property Tipo Required Default
runtime.host.authentication jwt objeto ❌ Não -

Configuração global do JWT (Token Web JSON).

Diagrama de tokens Web JSON com suporte no construtor de API de Dados.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.host.authentication.jwt audience cadeia ✔️ Sim* None
runtime.host.authentication.jwt issuer cadeia ✔️ Sim* None

* Ambos audience e issuer são necessários quando o jwt objeto está presente. O jwt objeto em si é necessário quando o provedor é EntraID, AzureADou Custom.

Format

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

Paginação (Runtime)

Parent Property Tipo Required Default
runtime pagination objeto ❌ Não -

Limites globais de paginação para pontos de extremidade REST e GraphQL.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.pagination max-page-size int ❌ Não 100,000
runtime.pagination default-page-size int ❌ Não 100
runtime.pagination next-link-relative boolean ❌ Não false

Valores compatíveis com tamanho máximo de página

Value Result
integer Há suporte para qualquer inteiro positivo de 32 bits.
0 Não há suporte.
-1 O padrão é o valor máximo com suporte.
< -1 Não há suporte.

Valores com suporte de tamanho de página padrão

Value Result
integer Qualquer inteiro positivo menor que o max-page-sizeatual.
0 Não há suporte.
-1 O padrão é a configuração de max-page-size atual.
< -1 Não há suporte.

Quando next-link-relative for true, os valores de paginação nextLink usam URLs relativas em vez de URLs absolutas.

Value Example
false (padrão) "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

Quando o valor é maior que max-page-size, os resultados são limitados a max-page-size.

Exemplo: Paginação em REST

Request

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

Payload da resposta

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

Próxima Página da Solicitação

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

Exemplo: Paginação no GraphQL

Conteúdo da solicitação (consulta)

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

Payload da resposta

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

Próxima Página da Solicitação

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

Exemplo: acessando max-page-size em solicitações

Use o max-page-size valor definindo $limit (REST) ou first (GraphQL) para -1.

REST

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

GraphQL

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

Compactação (runtime)

Note

A funcionalidade do Construtor de API de Dados 2.0 descrita nesta seção está atualmente em versão prévia e pode ser alterada antes da disponibilidade geral. Para obter mais informações, consulte o que há de novo na versão 2.0.

Parent Property Tipo Required Default
runtime compression objeto ❌ Não -

Configuração de compactação de resposta HTTP. Quando habilitado, o DAB compacta os corpos de resposta para reduzir os tamanhos de carga e melhorar as velocidades de transferência.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.compression level cadeia ❌ Não "optimal"

Valores com suporte para level

Value Description Economia de compactação Impacto sobre o desempenho
optimal Balanceia a taxa e a velocidade (padrão) Gzip: 90,5% /Brotli: 92,2% Uso moderado de CPU, leve aumento de latência
fastest Prioriza a velocidade em relação à taxa Gzip: 89,8% /Brotli: 91,1% Baixo uso de CPU, latência mínima
none Nenhuma compactação 0% (linha de base: 12.673 bytes) None

Cabeçalhos HTTP do cliente

A compactação é invocada pelo cabeçalho do Accept-Encoding cliente. Os algoritmos com suporte são Gzip e Brotli. A level configuração configura a estratégia de compactação quando o cliente e o servidor dão suporte a vários algoritmos.

Cabeçalhos com suporte

Cabeçalho HTTP Algoritmo usado
Accept-Encoding: gzip Gzip
Accept-Encoding: br Brotli

Format

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

Example

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

Cache (runtime)

Parent Property Tipo Required Default
runtime cache objeto ❌ Não -

Configuração do Cache Global.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.cache enabled boolean ❌ Não False
runtime.cache ttl-seconds inteiro ❌ Não 5
runtime.cache level-2 objeto ❌ Não -
Parent Property Tipo Required Default
runtime.cache.level-2 enabled boolean ❌ Não False
runtime.cache.level-2 provider cadeia ❌ Não redis
runtime.cache.level-2 connection-string cadeia ❌ Não None
runtime.cache.level-2 partition cadeia ❌ Não None

Tip

A propriedade de nível cache.ttl-seconds de entidade usa como padrão esse valor global.

Tip

Para obter configuração de ponta a ponta, comportamento em nível de cache e exemplos do Redis, consulte Implementar cache de nível 2.

Format

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

Important

Se global enabled for false, o nível enabled de entidade individual não importará.

Quando level-2.enabled é true, o DAB usa o provedor de cache distribuído configurado, além do cache na memória local. Uma entidade configurada com o nível L1L2 de cache verifica primeiro o cache local, depois o cache distribuído, antes de ir para o banco de dados.

Telemetria (runtime)

Parent Property Tipo Required Default
runtime telemetry objeto ❌ Não -

Configuração de telemetria global.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.telemetry log-level dicionário ❌ Não None
runtime.telemetry application-insights objeto ❌ Não -
runtime.telemetry open-telemetry objeto ❌ Não -
runtime.telemetry azure-log-analytics objeto ❌ Não -
runtime.telemetry file objeto ❌ Não -

Configura a verbosidade de log por namespace. Essa configuração segue as convenções de log padrão do .NET e permite o controle granular, embora assuma alguma familiaridade com os internos do construtor de API de Dados. O construtor de API de dados é de software livre: https://aka.ms/dab

Format

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

Tip

log-level pode ser recarregado a quente no desenvolvimento e na produção. Atualmente, é a única propriedade que dá suporte ao recarregamento frequente na produção.

Example

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

Application Insights (telemetria)

Parent Property Tipo Required Default
runtime.telemetry application-insights objeto ❌ Não -

Configura o registro em log no Application Insights.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.telemetry.application-insights enabled boolean ❌ Não true
runtime.telemetry.application-insights connection-string cadeia ✔️ Sim None

Format

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

OpenTelemetry (telemetria)

Parent Property Tipo Required Default
runtime.telemetry open-telemetry objeto ❌ Não -

Configura o registro em log para Abrir Telemetria.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.telemetry.open-telemetry enabled boolean ❌ Não true
runtime.telemetry.open-telemetry endpoint cadeia ✔️ Sim None
runtime.telemetry.open-telemetry headers cadeia ❌ Não None
runtime.telemetry.open-telemetry service-name cadeia ❌ Não "dab"
runtime.telemetry.open-telemetry exporter-protocol enumeração (grpc | httpprotobuf) ❌ Não grpc

Vários cabeçalhos são , separados (vírgula).

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

Saiba mais sobre OTEL_EXPORTER_OTLP_HEADERS.

Note

gRPC (4317) é mais rápido e dá suporte ao streaming, mas requer mais etapas de instalação. HTTP/protobuf (4318) é mais simples e fácil de depurar, mas menos eficiente.

Azure Log Analytics (telemetria)

Parent Property Tipo Required Default
runtime.telemetry azure-log-analytics objeto ❌ Não -

Configura o registro em log no Azure Log Analytics por meio de um ponto de extremidade de coleta de dados. Quando habilitado, o DAB envia dados de telemetria em lotes em um intervalo configurável.

Note

A funcionalidade do Construtor de API de Dados 2.0 descrita nesta seção está atualmente em versão prévia e pode ser alterada antes da disponibilidade geral. Para obter mais informações, consulte o que há de novo na versão 2.0.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.telemetry.azure-log-analytics enabled boolean ❌ Não false
runtime.telemetry.azure-log-analytics dab-identifier cadeia ❌ Não "DabLogs"
runtime.telemetry.azure-log-analytics flush-interval-seconds inteiro ❌ Não 5
runtime.telemetry.azure-log-analytics auth objeto ✔️ Sim* -

* auth é necessário quando enabled é true.

Parent Property Tipo Required Default
runtime.telemetry.azure-log-analytics.auth custom-table-name cadeia ✔️ Sim* null
runtime.telemetry.azure-log-analytics.auth dcr-immutable-id cadeia ✔️ Sim* null
runtime.telemetry.azure-log-analytics.auth dce-endpoint cadeia ✔️ Sim* null

* Obrigatório quando enabled for true.

  • dab-identifier— um rótulo passado para o Log Analytics para ajudar a diferenciar quais logs vêm do construtor de API de Dados.
  • flush-interval-seconds— o intervalo de tempo (em segundos) entre o envio de lotes de dados de telemetria.
  • custom-table-name— o nome da tabela personalizada no Azure Log Analytics em que os dados são armazenados.
  • dcr-immutable-id— a ID imutável da regra de coleta de dados que define como os dados são coletados.
  • dce-endpoint— a URL do ponto de extremidade de coleta de dados usada para enviar dados de telemetria.

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

Arquivo (telemetria)

Parent Property Tipo Required Default
runtime.telemetry file objeto ❌ Não -

Configura a gravação de logs de telemetria em um arquivo local. Quando habilitado, o DAB grava a saída de log estruturada no caminho do arquivo especificado com intervalos de rolagem configuráveis e limites de tamanho.

Note

A funcionalidade do Construtor de API de Dados 2.0 descrita nesta seção está atualmente em versão prévia e pode ser alterada antes da disponibilidade geral. Para obter mais informações, consulte o que há de novo na versão 2.0.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.telemetry.file enabled boolean ❌ Não false
runtime.telemetry.file path cadeia ✔️ Sim* "/logs/dab-log.txt"
runtime.telemetry.file rolling-interval enumeração ❌ Não "Day"
runtime.telemetry.file retained-file-count-limit inteiro ❌ Não 1
runtime.telemetry.file file-size-limit-bytes inteiro ❌ Não 1048576

* path é necessário quando enabled é true.

Valores de intervalo sem interrupção

Value Description
Minute Novo arquivo de log a cada minuto
Hour Novo arquivo de log a cada hora
Day Novo arquivo de log todos os dias (padrão)
Month Novo arquivo de log todos os meses
Year Novo arquivo de log todos os anos
Infinite Nunca rolar para um novo arquivo

Format

{
  "runtime": {
    "telemetry": {
      "file": {
        "enabled": <true> | <false> (default),
        "path": <string> (default: "/logs/dab-log.txt"),
        "rolling-interval": <"Day"> (default) | <"Minute"> | <"Hour"> | <"Month"> | <"Year"> | <"Infinite">,
        "retained-file-count-limit": <integer> (default: 1),
        "file-size-limit-bytes": <integer> (default: 1048576)
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "file": {
        "enabled": true,
        "path": "/var/log/dab/dab-telemetry.txt",
        "rolling-interval": "Hour",
        "retained-file-count-limit": 24,
        "file-size-limit-bytes": 5242880
      }
    }
  }
}

MCP (runtime)

Parent Property Tipo Required Default
runtime mcp objeto ❌ Não -

Configura o servidor MCP (Protocolo de Contexto de Modelo sql), que expõe entidades de banco de dados como ferramentas MCP para agentes de IA.

Note

A funcionalidade do Construtor de API de Dados 2.0 descrita nesta seção está atualmente em versão prévia e pode ser alterada antes da disponibilidade geral. Para obter mais informações, consulte o que há de novo na versão 2.0.

Propriedades aninhadas

Parent Property Tipo Required Default
runtime.mcp enabled boolean ❌ Não true
runtime.mcp path cadeia ❌ Não "/mcp"
runtime.mcp description cadeia ❌ Não null
runtime.mcp dml-tools booliano ou objeto ❌ Não true

A dml-tools propriedade aceita um booliano para habilitar ou desabilitar todas as ferramentas ou um objeto para controlar ferramentas individuais:

Parent Property Tipo Required Default
runtime.mcp.dml-tools describe-entities boolean ❌ Não true
runtime.mcp.dml-tools create-record boolean ❌ Não true
runtime.mcp.dml-tools read-records boolean ❌ Não true
runtime.mcp.dml-tools update-record boolean ❌ Não true
runtime.mcp.dml-tools delete-record boolean ❌ Não true
runtime.mcp.dml-tools execute-entity boolean ❌ Não true
runtime.mcp.dml-tools aggregate-records booliano ou objeto ❌ Não true

A aggregate-records ferramenta aceita um booliano ou um objeto com mais configurações:

Parent Property Tipo Required Default Intervalo
runtime.mcp.dml-tools.aggregate-records enabled boolean ❌ Não true
runtime.mcp.dml-tools.aggregate-records query-timeout inteiro ❌ Não 30 1 a 600 segundos

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

Para habilitar ou desabilitar todas as ferramentas DML de uma só vez, defina "dml-tools" como true ou false.

Quando você desabilitar uma ferramenta no nível de runtime, a ferramenta nunca aparece na resposta MCP tools/list e não pode ser invocada, independentemente das permissões de nível de entidade. Para obter mais informações sobre ferramentas DML individuais, consulte ferramentas DML (linguagem de manipulação de dados).

Usar a CLI

dab configure --runtime.mcp.enabled true
dab configure --runtime.mcp.path "/mcp"
dab configure --runtime.mcp.dml-tools.describe-entities true
dab configure --runtime.mcp.dml-tools.create-record true
dab configure --runtime.mcp.dml-tools.read-records true
dab configure --runtime.mcp.dml-tools.update-record true
dab configure --runtime.mcp.dml-tools.delete-record true
dab configure --runtime.mcp.dml-tools.execute-entity true
dab configure --runtime.mcp.dml-tools.aggregate-records.enabled true

Integridade (runtime)

Parent Property Tipo Required Default
runtime health objeto ❌ Não -

Configuração do ponto de extremidade de verificação de integridade global (/health).

Propriedades aninhadas

Parent Property Tipo Required Default Intervalo/notas
runtime.health enabled boolean ❌ Não true
runtime.health roles Matriz de cadeia de caracteres ✔️ Sim* null *Obrigatório no modo de produção
runtime.health cache-ttl-seconds inteiro ❌ Não 5 Min: 0
runtime.health max-query-parallelism inteiro ❌ Não 4 Min: Um, Máximo: Oito (preso)

Comportamento em desenvolvimento versus produção

Condition Comportamento de desenvolvimento Comportamento de produção
health.enabled = falso 403 estado 403 estado
health.enabled = verdadeiro Depende da função Depende da função
roles omitido ou null Integridade exibida 403 estado
função atual não em roles 403 estado 403 estado
função atual em roles Integridade exibida Integridade exibida
roles inclui anonymous Integridade exibida Integridade exibida

Format

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

Note

Se global enabled for false, o nível enabled de entidade individual não importará.

Example

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