web-dev-qa-db-fra.com

Meilleure pratique lors de l'utilisation d'une clé API dans Node.js

J'ai une clé API que j'utilise dans mon application Node.js. Actuellement, je le garde stocké dans un fichier texte et le mets dans une variable globale au démarrage de mon application.

Sooo, c'est juste:

var key = getKey();
useKeyGetData(key);

Je n'aime pas avoir cette variable globale, et c'est pénible de passer d'un fichier à l'autre. Existe-t-il un meilleur moyen d'obtenir ma clé où/quand j'en ai besoin? Existe-t-il une norme pour ce faire?

26
Drake Main

L'alternative conventionnelle à ce que vous faites, en particulier en ce qui concerne les clés API, consiste à utiliser variables d'environnement . Il s'agit d'une fonction de configuration au niveau du système d'exploitation. Chaque processus possède son propre ensemble de variables d'environnement, généralement hérité de son processus parent. Par convention, les variables d'environnement ont des noms en majuscules.

Dans node.js, vous pouvez accéder aux variables d'environnement via process.env . Par exemple, si vous exécutez une application comme celle-ci:

$ MY_VARIABLE=test node app.js

Vous pouvez accéder à la valeur de MY_VARIABLE variable d'environnement via:

process.env.MY_VARIABLE

Il peut cependant être fastidieux de devoir continuer à transmettre la ou les variables d'environnement à chaque appel de votre programme. C'est pourquoi il existe des packages tels que dotenv qui vous permettent de stocker vos variables d'environnement dans un fichier texte.

Plus précisément, vous aurez un fichier appelé .env et vous pourriez y avoir:

MY_VARIABLE=test
OTHER_VARIABLE=foo

Au début de votre app.js, vous faites alors:

require('dotenv').config();

Ceci lit les valeurs des variables d'environnement à partir de .env fichier. Vous pouvez ensuite y accéder comme vous le feriez pour toute autre variable d'environnement:

console.log("MY_VARIABLE: " + process.env.MY_VARIABLE);
console.log("OTHER_VARIABLE: " + process.env.OTHER_VARIABLE);

Maintenant, vous n'avez plus besoin de passer explicitement les variables d'environnement à votre application lors de l'invocation, c'est-à-dire que vous pouvez simplement l'exécuter comme d'habitude:

$ node app.js

Si vous en passez explicitement, il remplacera la valeur que vous avez donnée dans votre .env fichier:

$ MY_VARIABLE=bar node app.js

Maintenant le MY_VARIABLE la variable d'environnement aura la valeur "bar" au lieu de "testing". Puisque OTHER_VARIABLE n'est pas transmis explicitement, il conserve sa valeur de "foo" spécifié dans le .env fichier.

47
Jorge Israel Peña