node.js - 在 Node.js 中使用 API key 时的最佳实践

标签 node.js api-key

我在我的 Node.js 应用程序中使用了一个 API key 。目前,我将其存储在一个文本文件中,并在我的应用程序启动时将其放入一个全局变量中。

所以基本上就是这样:

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

我不喜欢这个全局变量,而且在文件之间传递很痛苦。有没有更好的方法可以在我需要的地方/时间获得我的 key ?这样做有什么标准吗?

最佳答案

传统的替代方法是使用 environment variables,尤其是在涉及 API key 时。 .这是一个操作系统级别的配置工具。每个进程都有自己的一组环境变量,通常从其父进程继承。按照惯例,环境变量的名称是大写的。

在node.js中,可以通过process.env访问环境变量.例如,如果您运行这样的应用程序:

$ MY_VARIABLE=test node app.js

您可以通过以下方式访问 MY_VARIABLE 环境变量的值:

process.env.MY_VARIABLE

然而,每次调用程序时都必须不断传递环境变量可能很乏味。这就是为什么会有诸如 dotenv 之类的包的原因。它允许您将环境变量存储在文本文件中。

更具体地说,您将有一个名为 .env 的文件,其中可能有:

MY_VARIABLE=test
OTHER_VARIABLE=foo

app.js 的开头,然后执行:

require('dotenv').config();

这会从 .env 文件中读取环境变量值。然后,您可以像访问任何其他环境变量一样访问它们:

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

现在您不必在调用时将环境变量显式传递给您的应用程序,即您可以照常运行它:

$ node app.js

如果您明确地传递一个,它将覆盖您在 .env 文件中提供的任何值:

$ MY_VARIABLE=bar node app.js

现在 MY_VARIABLE 环境变量的值将是 "bar" 而不是 "testing"。由于 OTHER_VARIABLE 没有显式传递,它保留了 .env 文件中指定的 "foo" 值。

关于node.js - 在 Node.js 中使用 API key 时的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35356692/

相关文章:

node.js - `npm root` 给出一个不存在的目录的路径

node.js - 从node.js中的mongoDB数据生成JSON树

git - 当我推送到 GitHub 时如何处理 secret API key ,以便我的项目在克隆 repo 协议(protocol)时仍然有效?

node.js - express/sails.js 模块导出私有(private)方法与其他模块的关系

javascript - TypeScript 使用 typescript-require 共享文件

python - 如何在 github 存储库中包含通用 secret /配置文件(用于 CI 目的)而不将其部署到生产环境

ruby-on-rails - 公共(public)铁路应用程序中的敏感数据存储在哪里?

python - 将 Google Calendar API 与 API key Python 结合使用

javascript - 嵌套的 JSON.parse 错误和 JS 对象遍历错误未被 JS try/catch 捕获,导致服务器崩溃

java - Retrofit、IGDB Api - 如何正确传递 Api Key?