Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met Data API Builder (DAB) kunt u geheimen (zoals databaseverbindingsreeksen) uit dab-config.json houden door waarden bij het laden te substitueren. Het eerste ondersteunde mechanisme is de @env() functie, waarmee omgevingsvariabelen worden omgezet vanuit de hostprocesomgeving of een lokaal .env bestand.
Zie ook: the @akv() function.
Wat @env() doet?
Plaats een verwijzing naar een omgevingsvariabele waar een tekenreekswaarde wordt verwacht:
{
"data-source": {
"connection-string": "@env('SQL_CONN_STRING')"
}
}
Tijdens de laadtijd van de configuratie scant DAB tekenreekswaarden voor het @env('VAR_NAME') patroon en vervangt het token door de waarde van de omgevingsvariabele VAR_NAME.
Bronnen voor waarden
| Bron | Description |
|---|---|
| Besturingssysteem/procesomgeving | Standaardomgevingsvariabelen aanwezig wanneer het DAB-proces wordt gestart. |
.env-bestand |
Een plaintextbestand met NAME=VALUE regels in de configuratiemap (voor gebruiksgemak bij lokale ontwikkeling). |
Opmerking
Het .env bestand overschrijft bestaande proces-/systeemomgevingsvariabelen wanneer beide dezelfde naam definiƫren.
Als u een lokaal .env bestand opgeeft voor ontwikkeling, worden de vermeldingen ervan gebruikt om te voldoen aan @env('var-name') zoekopdrachten zonder een aanroep naar de lokale omgeving te maken.
Voorbeeldbestand .env :
SQL_CONN_STRING=Server=localhost;Database=AppDb;User Id=app;Password=local-dev;
DB_TYPE=mssql
JOB_API_KEY=dev-job-key
Richtsnoeren:
- Houd
.envgrenzend aandab-config.json(of waar uw opstartproces dit verwacht). - Toevoegen
.envaan.gitignore. - Lege regels en regels beginnen met
#(indien ondersteund, controleren) worden doorgaans genegeerd. Controleer voordat u ondersteuning voor opmerkingen documenteert. - In Linux/macOS zijn namen hoofdlettergevoelig. In Windows zijn ze effectief niet hoofdlettergevoelig.
Gebruiken @env() in configuratie
Basisvervanging
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@env('SQL_CONN_STRING')"
}
}
Gecombineerd met @akv()
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@akv('prod-sql-connection')"
}
}
Parameters voor opgeslagen procedures
{
"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" ] }
]
}
}
}
Omgevingswaarden worden vervangen door tekenreeksen. Volgende parsering (bijvoorbeeld naar int of bool) wordt verwerkt door de verbruikende configuratie- of runtimelogica.
Probleemoplossingsproces
| Scenario | Outcome |
|---|---|
| Variabele gevonden | Vervanging slaagt. |
| Variabele afwezig | Het laden van de configuratie mislukt waarschijnlijk. |
| Variabele is niet gevonden | Vervangen door een lege tekenreeks. |
Meerdere @env() in verschillende eigenschappen |
Alles is onafhankelijk opgelost. |
| Gebruikt waar een numerieke waarde of een booleaanse waarde verwacht werd. | Waarde vervangen als tekenreeks; parseren kan lukken. |
Ongeldig patroon (bijvoorbeeld @env(DB_VAR) ontbrekende aanhalingstekens) |
Behandeld als een letterlijke tekenreeks. |
Volledig voorbeeld
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!;
Belangrijk
Voer geen bestanden met geheimen door .env . |
Snelzoekgids
| Onderdeel | Samenvatting |
|---|---|
| Syntaxis | @env('variable-name') |
| Simulatiebestand |
.env met name=value lijnen |
Mengen met @env() |
Supported. |
Review
Gebruik @env() dit om geheimen en omgevingsspecifieke waarden buiten configuratiebestanden te houden. Koppel het met gedisciplineerd geheimbeheer, zoals CI/CD-variabelearchieven of containerdefinities, voor een veilige en flexibele implementatie. Gebruik voor enterprise vaults in combinatie met de @akv() functie om geheimen te centraliseren.