Partager via


Utiliser @env() pour la substitution de variables d’environnement dans le générateur d’API de données.

Le générateur d’API de données (DAB) vous permet de conserver les secrets (par exemple, les chaînes de connexion de base de données) en substituant les valeurs au moment du chargement dab-config.json. Le premier mécanisme pris en charge est la @env() fonction, qui résout les variables d’environnement à partir de l’environnement de processus hôte ou d’un fichier local .env .

Voir aussi : the @akv() function.

Qu’est-ce que @env() fait

Placez une référence à une variable d’environnement où une valeur de chaîne est attendue :

{
  "data-source": {
    "connection-string": "@env('SQL_CONN_STRING')"
  }
}

Au moment du chargement de la configuration, DAB analyse les valeurs de chaîne correspondant au modèle @env('VAR_NAME') et remplace le jeton par la valeur de la variable d’environnement VAR_NAME.

Sources de valeurs

Origine Descriptif
Environnement de système d’exploitation/processus Les variables d’environnement standard sont présentes au démarrage du processus DAB.
Fichier .env Fichier en texte clair avec NAME=VALUE lignes dans le répertoire de configuration (pour la commodité du développement local).

Note

Le .env fichier remplace les variables d’environnement de processus/système existantes lorsque les deux définissent le même nom. Si vous fournissez un fichier local .env pour le développement, ses entrées sont utilisées pour satisfaire @env(les recherches « var-name » sans appeler l’environnement local.

Exemple de fichier .env :

SQL_CONN_STRING=Server=localhost;Database=AppDb;User Id=app;Password=local-dev;
DB_TYPE=mssql
JOB_API_KEY=dev-job-key

Lignes directrices:

  • Restez .env adjacent à dab-config.json (ou partout où votre processus de démarrage l’attend).
  • Ajout de .env à .gitignore.
  • Les lignes vides et les lignes commençant par # (si elles sont prises en charge, vérifiez) sont généralement ignorées. Confirmez avant de documenter la prise en charge des commentaires.
  • Sur Linux/macOS, les noms sont sensibles à la casse des lettres. Sur Windows, ils sont effectivement insensibles à la casse.

Utilisation @env() dans la configuration

Substitution de base

{
  "data-source": {
    "database-type": "@env('DB_TYPE')",
    "connection-string": "@env('SQL_CONN_STRING')"
  }
}

Combiné avec @akv()

{
  "data-source": {
    "database-type": "@env('DB_TYPE')",
    "connection-string": "@akv('prod-sql-connection')"
  }
}

Paramètres de procédure stockée

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

Les valeurs d’environnement sont remplacées par des chaînes. L’analyse suivante (par exemple, int ou bool) est gérée par la configuration consommatrice ou la logique d’exécution.

Résolution des problèmes

Scénario Résultat
Variable trouvée La substitution réussit.
Variable absente La charge de configuration échoue probablement.
Variable introuvable Substitué comme chaîne vide.
Multiple @env() dans différentes propriétés Ils ont tous été résolus indépendamment.
Utilisé où un numérique ou booléen est attendu Valeur substituée en tant que chaîne ; l’analyse syntaxique peut réussir.
Modèle non valide (par exemple @env(DB_VAR) guillemets manquants) Traité comme une chaîne littérale.

Exemple complet

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

Important

Ne validez .env pas les fichiers contenant des secrets. |

Référence rapide

Élément Résumé
Syntaxe @env('variable-name')
Fichier de simulation .env avec name=value lignes
Mélange avec @env() Pris en charge.

Révision

Permet @env() de conserver les secrets et les valeurs propres à l’environnement hors des fichiers de configuration. Associez ceci à une gestion rigoureuse des secrets, comme le stockage de variables CI/CD ou les définitions de conteneur, pour un déploiement sécurisé et flexible. Pour l’utilisation du coffre d’entreprise, combinez-le avec la @akv() fonction pour centraliser les secrets.