翻译 |《JavaScript Everywhere》第 10 章 部署咱们的 API(^_^)
写在最后面
大家好呀,我是毛小悠,是一位前端开发工程师。正在翻译一本英文技术书籍。
为了进步大家的浏览体验,对语句的构造和内容略有调整。如果发现本文中有存在瑕疵的中央,或者你有任何意见或者倡议,能够在评论区留言,或者加我的微信:code_maomao,欢送互相沟通交流学习。
(σ゚∀゚)σ..:*☆哎哟不错哦
第 10 章 部署咱们的 API
设想一下,如果用户每次想要通过咱们的 API
来创立、浏览、更新或删除一个笔记,必须只能通过个人电脑。目前,这就是咱们的 API
的工作形式,因为它仅在咱们的集体计算机上运行。咱们能够通过将应用程序部署到 Web
服务器来解决此问题。
在本章中,咱们将分两个步骤:
- 首先,咱们将建设一个咱们的
API
能够拜访的近程数据库。 - 其次,咱们将
API
代码部署到服务器上并将其连贯到数据库。
实现这些步骤后,咱们可用于从任何联网的计算机(包含将要开发的Web
,桌面和挪动界面)拜访API
。
托管咱们的数据库
第一步,咱们将应用托管数据库解决方案。对于咱们的 Mongo
数据库,咱们将应用MongoDB Atlas
。
这是由 Mongo
反对的组织反对的齐全托管的云产品。此外,他们提供了收费体验,能够很好地实现咱们的初始部署。让咱们逐渐实现部署到 MongoDB Atlas
的步骤。
首先,浏览 mongodb.com/cloud/atlas
并创立一个帐户。创立帐户后,零碎将提醒你创立数据库。在此屏幕上,你能够治理沙箱数据库的设置,然而我倡议临时应用默认值。
这些是:
- 亚马逊的
AWS
作为数据库主机,但也提供了谷歌的云平台和微软的Azure
。 - 具备“收费套餐”选项的最近区域。
- 集群层,默认值为“
M0
沙箱(共享RAM
,512MB
存储)” - 其余设置,咱们能够将其保留为默认设置。
- 集群名称,咱们能够将其保留为默认名称。
从此处单击“创立集群”,此时,Mongo
将须要几分钟来设置数据库(图10-1
)。
图 10-1
。MongoDB Atlas
数据库创立屏幕
接下来,你将看到 Clusters
页面,在这里你能够治理你的单个数据库集群(图10-2
)。
图 10-2MongoDB Atlas
集群
在“群集”屏幕上,单击“连贯”,零碎将提醒你设置连贯安全性。第一步是将你的 IP
地址列入白名单。因为咱们的应用程序将具备动静 IP
地址,因而你须要应用 0.0.0.0/0
将其关上为任何 IP
地址。将所有 IP
地址列入白名单后,你将须要设置平安的用户名和明码来拜访数据(图10-3
)。
图 10-3.MongoDB Atlas IP
白名单和用户帐户治理
将 IP
列入白名单并创立用户帐户后,你将抉择数据库的连贯办法。在这种状况下,它将是“应用程序”连贯(图10-4
)。
图 10-4
。在MongoDB Atlas
中抉择连贯类型
从这里,你能够复制咱们将在生产中应用的连贯字符串.env
文件(图10-5
)。
图 10-5
。MongoDB Atlas
的数据库连贯字符串
Mongo 明码
MongoDB Atlas
对明码中的特殊字符进行十六进制编码。这意味着,如果你应用(并且应该应用!)任何非字母或数字值,则在将明码增加到连贯字符串时,将须要应用该代码的十六进制值。网站 ascii.cl
为所有特殊字符提供相应的十六进制代码。例如,如果你的明码是Pizz
@2
!. 你将须要编码 @和!字符。你能够应用%,而后加上十六进制值。生成的明码将为 Pizz
%402
%21.
随着咱们的 MongoDB Atlas
托管数据库的启动和运行,咱们当初为咱们的应用程序提供了一个托管数据存储。在下一步中,咱们将托管咱们的利用程序代码并将其连贯到咱们的数据库。
部署咱们的应用程序
咱们下一步的部署设置是部署咱们的利用程序代码。就本书而言,咱们将应用云应用程序平台 Heroku
。我之所以抉择Heroku
是因为其杰出的用户体验和收费的收费套餐,然而其余云平台(例如 Amazon Web Services
,Google Cloud Platform
,Digital Ocean
或Microsoft Azure
)都为 Node.js
应用程序提供了代替托管环境。
在咱们开始之前,你须要拜访 Heroku
的网站并创立一个帐户。创立帐户后,你须要为你的操作系统装置 Heroku
命令行工具。
对于在 macOS
中,你能够应用 Homebrew
如下装置 Heroku
命令行工具:
$ brew tap heroku/brew && brew install heroku
对于 Windows
用户,请拜访 Heroku
命令行工具指南并下载相应的安装程序。
我的项目设置
装置了 Heroku
命令行工具后,咱们能够在 Heroku
网站上设置我的项目。通过单击“新建”→“创立新利用”(图10-6
)。
图 10-6
。Heroku
新利用对话框
在这里,零碎将提醒你为应用程序指定一个惟一的名称,而后单击“创立应用程序”按钮(图10-7
)。持续,在任何应用 YOUR_APP_NAME,你都会看到合格名称。
图10-7
。提供惟一的应用程序名称
当初咱们能够增加环境变量。相似于咱们应用咱们的 .ENV
本地文件,咱们能够 Heroku
的网站界面中治理咱们的生产环境变量。为此,请单击“设置”,而后单击“显示配置变量”按钮。在此屏幕中,增加以下配置变量(图10-8
):
NODE_ENV production
JWT_SECRET A_UNIQUE_PASSPHRASE
DB_HOST YOUR_MONGO_ATLAS_URL
图 10-8
。Heroku
的环境变量配置
咱们曾经筹备好部署咱们的代码。
部署形式
当初,咱们筹备将代码部署到 Heroku
的服务器上。为此,咱们能够在终端应用程序中应用简略的 Git
命令。咱们将 Heroku
设置为近程端点,而后增加并提交更改,最初将代码推送到Heroku
。为此,请在终端应用程序中运行以下命令:
$ heroku git:remote -a <YOUR_APP_NAME>
$ git add .
$ git commit -am "application ready for production"
$ git push heroku master
在 Heroku
构建和部署文件时,你应该在终端中看到输入。实现后,Heroku
将应用 package.json
文件中的运行脚本在其服务器上运行咱们的应用程序。
测验
胜利部署咱们的应用程序后,咱们将可能向咱们的近程服务器收回 GraphQL API
申请。默认状况下,GraphQL Playground UI
在生产中处于禁用状态,然而咱们能够应用终端应用程序中的 curl
测试应用程序。要运行 curl
申请,请在终端应用程序中输出以下内容:
$ curl
-X POST
-H "Content-Type: application/json"
--data '{"query":"{ notes { id} }"}'
https://YOUR_APP_NAME.herokuapp.com/api
如果测试胜利,咱们将收到一个蕴含空 notes
数组的响应,因为咱们的生产数据库尚未蕴含任何数据:
{"data":{"notes":[]}}
这样,咱们就曾经部署了应用程序!
论断
在本章中,咱们应用云服务来部署数据库和利用程序代码。MongoDB Atlas
和 Heroku
等服务使开发人员可能启动小型应用程序,并将其扩大到从趣味我的项目到流量大的业务的任何中央。通过部署咱们的API
,咱们曾经胜利开发了应用程序堆栈的后端服务。在以下各章中,咱们将重点介绍应用程序的UI
。
如果有了解不到位的中央,欢送大家纠错。如果感觉还能够,麻烦您点赞珍藏或者分享一下,心愿能够帮到更多人。