Express - RestfulAPI 起手教學 2

上次我們介紹如何利用 Express 快速建立了 web server,這次要來介紹開發 Express 好用的一些工具。

介紹 nodemon

nodemon 套件能夠自動化的重啟 Node.js 所創立的 application。意思就是,每次我們修改程式碼的時候,我們總要重新 run 程式,才會有我們想要看到的結果。而 nodemon 套件正是能夠幫我們自動化的重啟程式,不須手動去做重啟的動作,這樣可以幫助我們提升開發效率。對於 Web 專案,這種工具是很常見的,在各大語言的 Web 框架皆有類似的工具。

安裝 nodemon

在我們 node-rest-shop 專案底下,開啟 terminal 輸入以下指令:

1
npm install --save-dev nodemon

–save-dev 的意思代表此套件只存在開發階段,有些時候一些好用的工具套件我們只需在開發階段使用即可,未來將專案 deploy 到開發環境的時候,並不需要此套件。

使用 nodemon

在 package.json 中裡面有個參數是 script,這代表我們可以在裡面輸入一些指令,例如開啟專案入口點。以我們現在專案為例,我們新增以下指令:

1
"start": "nodemon app.js"

利用 nodemon 去執行 app.js,就能達到自動重啟功能!要啟用這項指令,我們可以在 terminal 輸入以下指令:

1
npm run start

就能開啟我們的專案入口點,app.js。

看到以上訊息,就代表我們成功使用 nodemon 去啟動我們的專案,而只要我們有任何修改程式碼的動作,只要有進行存檔,nodemon 就會立刻讓專案重啟,而不需讓我們手動去重啟。

介紹 dotenv

dotenv 套件,能夠幫助我們自動 load 環境變數,而不用我們在程式碼裡面去用程式控制環境變數。通常 web 專案裡面會定義到的環境變數不外乎是 port、database url 等等。只要是一些固定的值,而這些值又會在專案裡面不同程式檔案中用到,又或者是這些值是相對私密的,不允許公開在 code 裡面。dotenv 套件就是透過讀取.env 檔案,來 load 環境變數,因此我們只要創建.env 檔案在裡面定義這些環境變數的值,並在程式碼中載入 dotenv 套件,它就能幫我們自動載入這些環境變數供程式使用。

安裝 dotenv

在我們 node-rest-shop 專案下,開啟 terminal 輸入以下指令:

1
npm install dotenv

使用 dotenv

首先在專案下,創建.env 檔案,該檔案裡面可以定義環境變數,其定義格式為 NAME=VALUE,因為目前專案還太小,但 port 可以當作環境變數,因為在開發專案的時候要是 port 要更換,我們還要去 code 裡面尋找 port 變數定義在哪裡太麻煩了。因此將 port 環境變數定義為 3000:

1
PORT=3000

通常像這種環境變數的名稱,慣例上會以全大寫來命名,多個單字的話就用底線來連接。

接著我們在 app.js 最上面加入以下 code:

1
require('dotenv').config()

config函數裡面可放option參數,其中 option 裡面可以放置 custom 的環境變數檔案路徑。若沒添加,則預設讀取專案根目錄的.env 檔案。當執行以上 code,就會自動將環境變數 assign 給 process.env。也就是當我們在程式碼裡面想要讀取環境變數 PORT 的值,我們只需要這樣讀取:

1
const port = process.env.PORT

port 之值就會對應到.env 檔案所定義的值。

總結

今天我們加入了 nodemon 及 dotenv 兩個實用套件,app.js 內容更改如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
require('dotenv').config();
const express = require('express');
const app = express();
const port = process.env.PORT;

app.get('/', function (req, res, next) {
res.send('Hello World');
});

app.listen(port, function () {
console.log('Express app started on ' + port);
});

package.json 如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"name": "node-rest-shop",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "nodemon app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"dotenv": "^8.0.0",
"express": "^4.17.1"
},
"devDependencies": {
"nodemon": "^1.19.1"
}
}

.env

1
PORT=3000

詳細內容可參考 Github Source Code:https://github.com/KennyChenFight/node-rest-shop/tree/section2

最後最後!請聽我一言!

如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!