Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il generatore di API dati (DAB) consente di mantenere i segreti (ad esempio, le stringhe di connessione del database) nascosti attraverso la sostituzione dei valori durante il caricamento di dab-config.json. Il primo meccanismo supportato è la @env() funzione , che risolve le variabili di ambiente dall'ambiente del processo host o da un file locale .env .
Vedere anche: the @akv() function.
Che cosa @env() fa
Inserire un riferimento a una variabile di ambiente ovunque sia previsto un valore stringa:
{
"data-source": {
"connection-string": "@env('SQL_CONN_STRING')"
}
}
In fase di caricamento della configurazione, DAB analizza i valori stringa per il modello @env('VAR_NAME') e sostituisce il token con il valore della variabile di ambiente VAR_NAME.
Origini per i valori
| Fonte | Description |
|---|---|
| Ambiente del sistema operativo/processo | Variabili di ambiente standard presenti all'avvio del processo DAB. |
File .env |
File di testo non crittografato con NAME=VALUE righe nella directory di configurazione (per praticità di sviluppo locale). |
Annotazioni
Il file .env sostituisce le variabili di ambiente del processo/sistema esistenti quando entrambe definiscono lo stesso nome.
Se si fornisce un file locale .env per lo sviluppo, le relative voci vengono utilizzate per soddisfare le query @env('var-name' senza effettuare una chiamata all'ambiente locale.
File di esempio .env :
SQL_CONN_STRING=Server=localhost;Database=AppDb;User Id=app;Password=local-dev;
DB_TYPE=mssql
JOB_API_KEY=dev-job-key
Istruzioni:
- Mantenere
.envadiacente adab-config.json(o ovunque il tuo processo di avvio lo richieda). - Aggiunta di
.enva.gitignore. - Le righe vuote e le righe che iniziano con
#(se supportato, verifica) vengono generalmente ignorate; confermare il supporto dei commenti prima di documentare. - In Linux/macOS i nomi fanno distinzione tra maiuscole e minuscole. In Windows, effettivamente non fanno distinzione tra maiuscole e minuscole.
Uso @env() nella configurazione
Sostituzione di base
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@env('SQL_CONN_STRING')"
}
}
Combinato con @akv()
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@akv('prod-sql-connection')"
}
}
Parametri della stored procedure
{
"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" ] }
]
}
}
}
I valori di ambiente vengono sostituiti come stringhe. L'analisi successiva, ad esempio int o bool, viene gestita dalla logica di runtime o configurazione di utilizzo.
Risoluzione dei problemi
| Scenario | Risultato |
|---|---|
| Variabile trovata | La sostituzione ha esito positivo. |
| Variabile assente | Probabilmente il caricamento della configurazione fallisce. |
| Variabile non trovata | Sostituito con una stringa vuota. |
Multiplo @env() in proprietà diverse |
Tutti risolti in modo indipendente. |
| Usato dove è previsto un valore numerico o booleano. | Valore sostituito come stringa; l'analisi può avere esito positivo. |
Modello non valido (ad esempio @env(DB_VAR) virgolette mancanti) |
Considerato come stringa letterale. |
Esempio 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
Non eseguire il commit .env di file contenenti segreti. |
Riferimento rapido
| Elemento | Riassunto |
|---|---|
| Sintassi | @env('variable-name') |
| File di simulazione |
.env con name=value linee |
Combinazione con @env() |
Supportato. |
Review
Usare @env() per mantenere i segreti e i valori specifici dell'ambiente fuori dai file di configurazione. Associarlo a una gestione dei segreti disciplinata, ad esempio archivi variabili CI/CD o definizioni di contenitori, per una distribuzione sicura e flessibile. Per l'utilizzo della cassaforte aziendale, combinare con la @akv() funzione per centralizzare le informazioni riservate.