Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penyusun API Data (DAB) memungkinkan Anda menyimpan rahasia (misalnya, string koneksi database) agar tidak tersimpan dalam dab-config.json dengan mengganti nilainya saat pemuatan. Mekanisme pertama yang didukung adalah @env() fungsi , yang menyelesaikan variabel lingkungan dari lingkungan proses host atau file lokal .env .
Lihat juga: the @akv() function.
Apa yang @env() dilakukan
Tempatkan referensi ke variabel lingkungan di mana saja nilai string diharapkan:
{
"data-source": {
"connection-string": "@env('SQL_CONN_STRING')"
}
}
Pada waktu pemuatan konfigurasi, DAB memindai pola @env('VAR_NAME') dalam nilai string dan mengganti token dengan nilai lingkungan variabel VAR_NAME.
Sumber untuk nilai
| Sumber | Description |
|---|---|
| OS /lingkungan proses | Variabel lingkungan standar ada saat proses DAB dimulai. |
.env arsip |
File teks biasa dengan NAME=VALUE baris di direktori konfigurasi (untuk kenyamanan pengembangan lokal). |
Nota
File .env mengambil alih variabel lingkungan proses/sistem yang ada saat keduanya menentukan nama yang sama.
Jika Anda menyediakan file lokal .env untuk pengembangan, entrinya digunakan untuk memenuhi @env(pencarian 'var-name') tanpa melakukan panggilan ke lingkungan lokal.
Contoh .env file:
SQL_CONN_STRING=Server=localhost;Database=AppDb;User Id=app;Password=local-dev;
DB_TYPE=mssql
JOB_API_KEY=dev-job-key
Pedoman:
- Tetap
.envberdekatan dengandab-config.json(atau di mana pun proses memulai Anda mengharapkannya). - Tambahkan
.envke.gitignore. - Baris kosong dan baris yang dimulai dengan
#(jika didukung, verifikasi) biasanya diabaikan; konfirmasikan sebelum mendokumentasikan dukungan komentar. - Di Linux/macOS, nama peka huruf besar/kecil. Di Windows, mereka secara efektif tidak membedakan huruf besar dan kecil.
Menggunakan @env() dalam konfigurasi
Substitusi dasar
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@env('SQL_CONN_STRING')"
}
}
Dikombinasikan dengan @akv()
{
"data-source": {
"database-type": "@env('DB_TYPE')",
"connection-string": "@akv('prod-sql-connection')"
}
}
Parameter prosedur tersimpan
{
"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" ] }
]
}
}
}
Nilai lingkungan digantikan sebagai string. Penguraian berikutnya (misalnya, ke int atau bool) ditangani oleh konfigurasi pemrosesan atau logika runtime.
Troubleshooting
| Scenario | Hasil |
|---|---|
| Variabel ditemukan | Penggantian berhasil. |
| Variabel tidak ada | Kemungkinan besar pemuatan konfigurasi gagal. |
| Variabel tidak ditemukan | Diganti sebagai string kosong. |
Beberapa @env() pada berbagai properti |
Semua diselesaikan secara independen. |
| Digunakan di mana nilai numerik atau bool diharapkan | Nilai diganti sebagai string; parsing mungkin akan berhasil. |
Pola tidak valid (misalnya @env(DB_VAR) tanda kutip yang hilang) |
Diperlakukan sebagai string harfiah. |
Contoh lengkap
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!;
Penting
Jangan memasukkan .env file yang berisi rahasia. |
Referensi cepat
| Item | Ringkasan |
|---|---|
| Syntax | @env('variable-name') |
| File simulasi |
.env dengan name=value baris |
Mencampur dengan @env() |
Supported. |
Tinjauan
Gunakan @env() untuk menjaga rahasia dan nilai khusus lingkungan dari file konfigurasi. Pasangkan dengan manajemen rahasia yang disiplin, seperti penyimpanan variabel CI/CD atau definisi kontainer, untuk penyebaran yang aman dan fleksibel. Untuk mengunakan vault perusahaan, gabungkan @akv() dengan fungsi untuk memusatkan rahasia.