Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O construtor de API de dados (DAB) permite manter segredos (por exemplo, cadeias de conexão de banco de dados) fora de dab-config.json substituindo-os por valores no tempo de carregamento. O primeiro mecanismo suportado é a função @env(), que resolve variáveis de ambiente do ambiente de processo do host ou de um ficheiro local .env.
Ver também: the @akv() function.
O que @env() faz
Coloque uma referência a uma variável de ambiente em qualquer lugar onde um valor de cadeia de caracteres seja esperado:
{
"data-source": {
"connection-string": "@env('SQL_CONN_STRING')"
}
}
No momento do carregamento da configuração, o DAB verifica os valores da cadeia de caracteres para o padrão @env('VAR_NAME') e substitui o token pelo valor da variável de ambiente VAR_NAME.
Fontes de valores
| Fonte | Description |
|---|---|
| SO / ambiente de processo | Variáveis de ambiente padrão presentes quando o processo DAB é iniciado. |
arquivo .env |
Um ficheiro de texto simples com NAME=VALUE linhas no diretório de configuração (para conveniência de desenvolvimento local). |
Observação
O .env arquivo substitui as variáveis de ambiente de processo/sistema existentes quando ambas definem o mesmo nome.
Se for fornecido um arquivo local .env para desenvolvimento, as suas entradas serão usadas para satisfazer pesquisas de @env('var-name') sem realizar uma chamada para o ambiente local.
Exemplo .env de ficheiro:
SQL_CONN_STRING=Server=localhost;Database=AppDb;User Id=app;Password=local-dev;
DB_TYPE=mssql
JOB_API_KEY=dev-job-key
Diretrizes:
- Mantenha
.envadjacente adab-config.json(ou onde quer que o seu processo de arranque o espere). - Adicionar
.enva.gitignore. - Linhas em branco e linhas que começam com
#(se suportado, verificar) são normalmente ignoradas; confirme antes de documentar o suporte a comentários. - No Linux ou macOS, os nomes são sensíveis a maiúsculas e minúsculas. No Windows, eles não diferenciam maiúsculas de minúsculas.
Usando @env() na configuração
Substituição de base
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@env('SQL_CONN_STRING')"
}
}
Combinado com @akv()
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@akv('prod-sql-connection')"
}
}
Parâmetros do procedimento armazenado
{
"entities": {
"RunJob": {
"source": {
"object": "dbo.RunJob",
"type": "stored-procedure",
"parameters": {
"intParam": "@env('SP_PARAM1_INT')",
"boolParam": "@env('SP_PARAM2_BOOL')"
}
},
"permissions": [
{ "role": "anonymous", "actions": [ "execute" ] }
]
}
}
}
Os valores de ambiente são substituídos como cadeias de caracteres. A análise subsequente (por exemplo, para int ou bool) é manipulada pela configuração consumidora ou lógica de execução em tempo real.
Solução de problemas
| Scenario | Outcome |
|---|---|
| Variável encontrada | A substituição é bem-sucedida. |
| Variável ausente | Provável falha na carga de configuração. |
| Variável não encontrada | Substituído como cadeia de caracteres vazia. |
Múltiplos @env() em propriedades diferentes |
Tudo resolvido de forma independente. |
| Usado onde se espera numérico ou booleano | Valor substituído como cadeia de caracteres; o processamento pode ter sucesso. |
Padrão inválido (por exemplo @env(DB_VAR) , aspas ausentes) |
Tratada como uma cadeia de caracteres literal. |
Exemplo completo
dab-config.json:
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@env('SQL_CONN_STRING')"
},
"runtime": {
"rest": { "enabled": true }
},
"entities": {
"Books": {
"source": "dbo.Books",
"permissions": [
{ "role": "anonymous", "actions": [ "read" ] }
]
}
}
}
.env:
DB_TYPE=mssql
SQL_CONN_STRING=Server=localhost;Database=BooksDb;User Id=app;Password=StrongPassword!;
Importante
Não confirme .env ficheiros que contenham informações confidenciais. |
Referência rápida
| Item | Resumo |
|---|---|
| Sintaxe | @env('variable-name') |
| Arquivo de simulação |
.env com name=value linhas |
Misturar com @env() |
Supported. |
Revisão
Use @env() para manter segredos e valores específicos do ambiente fora dos arquivos de configuração. Emparelhe-o com um gerenciamento secreto disciplinado, como armazenamentos de variáveis de CI/CD ou definições de contêiner, para uma implantação segura e flexível. Para o uso do Enterprise Vault, combine com a @akv() função para centralizar segredos.