
作为一个开发者的倡导者,我做了很多演示项目来说明我的讲座或内容。另外,作为一个混乱的人,我在演示过程中并没有做好安全存储环境变量的工作。不止一次,我在流媒体或会议演讲中暴露了我的环境变量。幸运的是,像和这样的开发者朋友向我介绍了Cloak,这是一个VS Code扩展,可以在你不小心分享你的屏幕时隐藏你的环境变量的值。
我最近开发了一个小应用程序,住在github域。开发这个应用程序让我想起了我以前作为软件工程师时的所有挣扎。(我并不怀念在最后期限前编码的压力)。我遇到的挣扎之一是与合作者分享我的环境变量。我希望我的队友能在本地试用这个应用程序,这样他们就可以贡献代码或审查用户体验,但我不确定如何告诉他们安全地设置环境变量。
我过去经历过的其他失误:
我相信有很多解决方案可以在沙盒应用程序中安全地存储环境变量,但GitHub Codespaces对我来说是最有效的!
使用GitHub Codespaces的体验是无缝的,因为它允许仓库合作者去我的仓库,打开Codespaces,并在本地运行代码。他们不需要填写数值,所以我也不需要明确地分享秘密。在幕后,GitHub Codespaces 从仓库设置中的一个名为 Codespaces Secrets 的存储中提取这些值。
为了说明这个例子,我们将使用NASA的API,因为大多数开发者都能访问它。
填写 上的表格,申请一个 API 密钥。你应该在你的电子邮件中收到API密钥。(保存这个密钥,因为我们将在Step 5使用它)。
包括一些最常见的应用程序框架的模板代码,包括Next.js、React.js、Django、Express、Ruby on RAIls、Preact、Flask和Jupyter Notebook。模板为开发者提供了一个沙盒,在Codespaces中构建、测试和调试应用程序。这意味着你不必从头开始进行编码。我们已经有了一个工作项目,你可以将其提升为你所设想的项目。你可以使用模板来了解开发人员如何结构他们用各种编程语言编写的项目。而且你可以用它来了解不同的文件是如何相互沟通的。
例如,我一直想学习更多关于人工智能和机器学习的知识,但我不知道从哪里开始。我使用一个Jupyter Notebooks模板来。该模板已经有了我需要的所有工具;我只需要修改几行代码。
在本教程中,我们将导航到https://github.com/codespaces/templates,并选择React模板。

一旦我们的Codespace被完全加载,你会在一个名为 “Simple Browser” 的标签上看到你的 *** 应用的实时预览。(如果你还没有看到 “Simple Browser” 标签,请给它几分钟时间来加载)。它应该看起来像下面的图片:

我们还没有完成。我们的主要目标是在Codespace中存储和引用环境变量。然而,只有当我们的Codespace生活在一个资源库中时,我们才能做到这一点。要做到这一点,我们需要发布我们的Codespace。采取以下步骤来发布当前的Codespace:




在你的新版本库中,导航到Settings > Secrets and variables > Codespaces。你也可以通过导航到一个类似这样的URL来找到正确的页面: https://github.com/REPLACE_WITH_GITHUB_OWNER/REPLACE_WITH_GITHUB_REPO/settings/secrets/codespaces
你登陆的页面应该如下图所示:

让我们创建两个版本库的私钥:
REACT_app_NASA_ENDPOINT=https://api.nasa.gov/REACT_APP_NASA_API_KEY= This is where you will add your NASA API key现在,我们可以使用惯例在我们的代码库中引用这些变量: process.env.{ENVIRONMENT_VARIABLE_NAME}
一旦你添加了新的API密钥,你的Codespaces应该 “Auto” 认识到你向你的Codespaces添加了新的秘密。如果是这样,你的Codespaces将弹出一个通知,说:”Your codespace secrets have changed. Reload to apply。”
按下 “Reload to apply” 按钮,这些变化就会生效。

Axios是我们用来调用NASA API的npm包。在你的Codespace的终端运行这个命令来安装axios:
npm install --save axios
(这一步我使用了Wayne Fornworth在Medium上的。我过去曾使用过NASA的API,但在建立这个文件时,我觉得有点偷懒。谢谢你,韦恩,谢谢你的博文! )
在你的src目录下创建一个文件,名为 HttpClient.js ,然后在该文件中添加以下几行代码:
(注意:第2行和第3行是指我们通过使用 process.env.{ENVIRONMENT_VARIABLE_NAME} 创建的私钥。)
import axios from "axios"
const nasaEndpoint = process.env.REACT_APP_NASA_ENDPOINT
const nasaApiKey = process.env.REACT_APP_NASA_API_KEY
axios.interceptors.request.use(
config => {
config.params = config.params ? config.params : {}
const configUrl = config.url
if (configUrl.includes(nasaEndpoint)) {
config.params["api_key"] = nasaApiKey
}
return config
},
error => {
return Promise.reject(error)
}
)
export default {
getApod() {
return axios.get(`${nasaEndpoint}planetary/apod`)
},
}
删除 src/App.js 文件的当前内容,用以下几行代码替换它:
import React, { useState, useEffect } from "react"
import HttpClient from "./HttpClient"
const App = () => {
const [apod, setApod] = useState({})
useEffect(() => {
HttpClient.getApod().then(apodData => {
setApod(apodData.data)
})
}, [])
return (
<div style={{ maxWidth: 900, padding: 30 }}>
<h1>NASA API</h1>
<h2>Astronomy Picture of the Day</h2>
{apod && (
<article>
<header>
{apod.title} - <i>{apod.date}</i>
</header>
<img src={apod.url} alt="APOD" width="800" height="auto" />
<p>{apod.explanation}</p>
<pre
style={{
overflowX: "auto",
whiteSpace: "pre-wrap",
wordWrap: "break-word",
}}
>
<hr />
{json.stringify(apod, null, 2)}
</pre>
</article>
)}
</div>
)
}
export default App
如果成功的话,你的简单的浏览器标签应该呈现出与下面类似的图像:

任何人都可以打开你的Codespace,但环境变量不会对所有人都有效。为了让人们看到同样的结果(比如,为了让API调用发挥作用),你需要把用户添加为版本库合作者。如果他们不是版本库的合作者,他们会说页面上有一个破碎的图像。查看,了解如何为你的版本库添加合作者。

(via )
扫描二维码推送至手机访问。
版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。
经过几个小时的努力工作后,您是否感到眼睛疲劳或难以阅读代码?许多程序员在开始头疼之前从没想过要切换字体。 如果您经常发现在尝试扫描一千行代码时眼睛模糊不清,或者在停止编码数小时后头疼,那么可能是时候尝试一种新字体了。即使您没有遇到这些症状,设计良好的字体通常也比默认系统字体具有更好的可读性。...
对于初学者和那些刚刚进入WordPress开发的人来说,PHP是您可以开始的最佳起点之一。这是一种超级简单直接的语言,使其成为之一,因此相当容易上手,它构成了在线开发的支柱。另外,如果你想在WordPress后端工作,你肯定需要学习它。 但是,如果您不想在昂贵的大学课程上花费数月或数年时间怎么...
想成为一名网络开发人员或好奇工作的哪些子类型的薪水最高?Web开发是一个竞争激烈、多样化的行业,随着新语言和框架的出现而不断发展。 询问Web开发人员的薪水是一个难以解决的问题(尽管我们尝试)。有太多的因素需要考虑。 无论您是自由开发者还是有兴趣从事更传统的工作、喜欢前端或后端工作,或者想知...
Node.js和PHP是Web开发工作中常用的两种基本Web技术。两者都为服务器端开发做出了贡献,Node.js甚至同时服务于客户端和服务器端开发。 PHP已经为开发人员服务了近3年,现在它为78%的网络提供支持。相比之下,Node.js相对较新,但扩展速度非常快,由于其全栈开发能力而成为流行...
您可能听说过SaaS,您可能听说过PaaS和IaaS,但您听说过函数即服务 (FaaS) 吗? FaaS市场正在快速增长。根据Allied Market Research的数据,2018年市场价值 。预计到2026年,这一数字将增长到240亿美元——这意味着该行业将从2020年到2026年以2...
Web服务器负责使浏览器和用户可以访问您的网站。您可能以前听说过,但您可能不知道它是什么或它是如何工作的。幸运的是,我们为这个流行的服务器软件整理了一份快速指南。 在这篇文章中,我们将介绍NGINX的基础知识。我们将看看它是什么,它与其他Web服务器有何不同,以及它是如何工作的。我们还将讨论它...