在 ServBay 中配置與運行 LoopBack 專案
什麼是 LoopBack?
LoopBack 是 IBM 所開發的一個高度可擴展的開源 Node.js 框架,專為快速構建 API 與微服務而設計。它採用模型驅動開發(MDD)方式,協助開發者高效定義資料模型,自動產生功能強大的 RESTful API。LoopBack 框架內建豐富特性,包括資料源連接、用戶驗證與授權、API 瀏覽工具等並支援多種資料庫與協議。
LoopBack 的關鍵特色與優勢
- 模型驅動開發 (MDD):以直觀方式定義資料模型,框架自動產生相應 API 端點與資料驗證邏輯。
- 多資料源支援:輕鬆連接主流資料庫(如 MongoDB、MySQL、PostgreSQL、MariaDB 等)、RESTful 與 SOAP 等服務。
- 強大 CLI 工具:LoopBack CLI(命令列工具)提供豐富指令,有效簡化專案初始化、模型定義與資料源配置等開發工作。
- 模組化與擴展性:架構設計靈活,支援自訂模組與第三方元件,方便整合各類服務、因應多元商業場景。
- 內建安全機制:內建即用的用戶驗證(Authentication)與授權(Authorization),協助快速建構安全的 API。
借助 LoopBack,開發者能大幅提升 Web 應用後端及 API 的開發效率,打造高效能且易維護的應用程式。
使用 ServBay 建立並運行 LoopBack 專案
本文將引導你善用 ServBay 內建之 Node.js 執行環境來快速建立並執行 LoopBack 專案。我們將運用 ServBay 的「網站」功能,配置本機 Web 伺服器,並利用反向代理技術,將外部請求導向 LoopBack 應用運行的埠號,快速實現本機存取與開發除錯。
建立 LoopBack 專案
安裝 LoopBack CLI
開始前,請先確保你已在 ServBay 安裝並啟用了 Node.js 套件。然後打開終端機,使用 npm 全域安裝 LoopBack CLI 工具:
bashnpm install -g @loopback/cli
1初始化專案
切換至 ServBay 建議的網站根目錄
/Applications/ServBay/www
,利用 LoopBack CLI 初始化新專案。專案名稱建議使用小寫字母與連字號,例如servbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2CLI 會引導你完成專案設定,包括特性選擇(如 REST API、序列化、驗證等)與結構配置,請依需求進行選取。
安裝專案依賴套件
進入新專案資料夾並安裝所需的 Node.js 相依套件:
bashcd servbay-loopback-app npm install
1
2
修改 LoopBack 專案回應內容(非必要步驟)
為了示範如何透過 ServBay 存取應用,我們能夠修改預設的 /ping
接口,讓它回傳自訂訊息。
修改
src/controllers/ping.controller.ts
檔案尋找專案內之
src/controllers/ping.controller.ts
,將檔案內容修改如下,讓/ping
API 回傳字串 "Hello ServBay!":typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // 修改回傳內容為 "Hello ServBay!" return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
以開發模式啟動專案
開發階段你通常會啟動 LoopBack 內建開發伺服器,以利快速修正與測試。我們將透過 ServBay 反向代理瀏覽這個開發伺服器。
啟動開發伺服器
在專案根目錄下於終端機啟動 LoopBack 應用,預設會監聽指定埠口。你可設定
PORT
來指定埠號,例如8585
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2啟動後,你會在終端看到類似 "Server is running at http://[::1]:8585" 的提示。
配置 ServBay 網站(反向代理)
進入 ServBay 控制面板,切換到「網站」功能分頁。點擊新增,建立反向代理網站,將外部域名與埠號指向 LoopBack 於內部監聽的位置:
- 名稱 (Name):如
My first LoopBack dev site
(用於 ServBay 內識別) - 網域 (Domain):如
servbay-loopback-dev.servbay.demo
(你的本地測試網域,可用瀏覽器存取) - 網站類型 (Type):選擇
反向代理 (Reverse Proxy)
- IP 位址 (IP Address):填入
127.0.0.1
(LoopBack 執行於本機) - 埠號 (Port):填入
8585
(LoopBack 監聽之埠號)
設定完成後請儲存並套用。ServBay 會自動設定本機 DNS(修改
/etc/hosts
或使用 ServBay Helper Tool)以及 Web 伺服器(Caddy 或 Nginx),讓你可經由所設定的網域快速存取。有關如何在 ServBay 新增反向代理網站,請參考:添加 Node.js 開發網站。
- 名稱 (Name):如
訪問開發模式應用
開啟瀏覽器,造訪你設定的網域與接口路徑,例如
https://servbay-loopback-dev.servbay.demo/ping
。ServBay 預設支援本地網站自動配置 SSL 憑證(可用 ServBay User CA 或 ServBay Public CA),你可直接用 HTTPS 安全訪問本地開發網站,這可模擬正式環境行為,有助於提前發現 SSL 相關潛在問題。更多 ServBay SSL 功能說明請參見:使用 SSL 保護網站。
正式環境部署(可選步驟)
當你的 LoopBack 專案準備好部署時,通常需以 production 模式啟動。此模式下性能更佳且除錯資訊最少。
啟動正式(production)伺服器
在專案目錄下於終端機設定
NODE_ENV
為production
並指定新埠號(例如8586
):bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2配置 ServBay 網站(反向代理)
回到 ServBay 控制面板網站分頁,新增或修改一個反向代理網站,指向 production 模式下的 LoopBack 應用:
- 名稱 (Name):如
My first LoopBack production site
- 網域 (Domain):如
servbay-loopback-prod.servbay.demo
- 網站類型 (Type):選
反向代理 (Reverse Proxy)
- IP 位址 (IP Address):
127.0.0.1
- 埠號 (Port):
8586
(production mode 監聽的埠號)
存檔並應用更動。
- 名稱 (Name):如
訪問正式環境應用
用瀏覽器造訪正式環境網域,例如
https://servbay-loopback-prod.servbay.demo/ping
,檢查 production 運作情況。ServBay 同步提供 HTTPS 支援。
資料庫連線設定
LoopBack 框架透過資料源連接器支援多種資料庫。ServBay 提供 MySQL、MariaDB、PostgreSQL、MongoDB 與 Redis 等眾多資料庫套件,讓你可輕鬆於 ServBay 啟動並於 LoopBack 專案中設置連接。
以下為連接 ServBay 常見資料庫的配置範例。請依實際需求調整設定。
重要提示: 範例中的資料庫用戶名與密碼僅作為占位。實際操作時,請務必使用你於 ServBay 為相應資料庫設定的 root 或其他帳號密碼,可透過 ServBay 控制面板管理帳戶資訊。
連接 MongoDB
確認 ServBay 已安裝啟動 MongoDB 套件。 安裝 LoopBack 的 MongoDB 連接器:
bashnpm install --save @loopback/connector-mongodb
1然後在專案中配置資料源(通常為
src/datasources/mongodb.datasource.ts
或類似檔案):typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // ServBay MongoDB 預設運行在 localhost:27017 url: 'mongodb://localhost:27017/servbay-loopback-app', // 請替換你的資料庫名稱 host: 'localhost', port: 27017, user: '', // 若設定驗證請填入帳號 password: '', // 若設定驗證請填入密碼 database: 'servbay-loopback-app', // 替換你的資料庫名稱 // 其他可選設定... }; export class MongodbDataSource extends juggler.DataSource { static dataSourceName = 'mongodb'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22連接 Redis
請確保 ServBay 已安裝並啟動 Redis 套件。 安裝 LoopBack 的 Redis 連接器(注意:LoopBack官方未直接提供
@loopback/connector-redis
,通常採用社群方案如loopback-connector-redis
或 Node.js 的redis
套件結合服務實現):bashnpm install --save loopback-connector-redis # 或其他相容 Redis 函式庫
1接著於專案中配置資料源(以下依
loopback-connector-redis
格式示範):typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // ServBay Redis 預設運行在 localhost:6379 url: 'redis://localhost:6379', // 其他可選設定... }; export class RedisDataSource extends juggler.DataSource { static dataSourceName = 'redis'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17注意:LoopBack 4 的資料源用法較 LoopBack 3 不同,上例為 LoopBack 3 連接器寫法的簡化說明。LoopBack 4 正式建議用
@loopback/repository
搭配@datasource
裝飾器及現代化配置方式,詳情請參考官方文件。連線參數如host
、port
、user
、password
、database
則通用不變。連接 MariaDB(或 MySQL)
請確認 ServBay 已啟用 MariaDB 或 MySQL 套件。LoopBack 的 MySQL 連接器同時支援 MariaDB。 安裝 LoopBack 的 MySQL 連接器:
bashnpm install --save @loopback/connector-mysql
1然後於專案資料夾中設定資料源:
typescript// src/datasources/mariadb.datasource.ts 或 mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // 或 'mysql' connector: 'mysql', // 使用 mysql 連接器 // url: '', // 可用 url 方式,或分別配置 host/port/database host: 'localhost', // ServBay 資料庫預設運行於本機 port: 3306, // MariaDB/MySQL 預設埠口 user: 'root', // ServBay MariaDB/MySQL 預設帳號常為 root password: 'password', // << 請替換為 ServBay 實際設定的資料庫密碼 >> database: 'servbay_loopback_app', // 替換你的資料庫名稱 // 其他可選設定... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // 或 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21請注意:本例
password: 'password'
僅為範例占位,請在 ServBay 資料庫管理介面查閱/設定你的 MariaDB/MySQL root 密碼並填入。連接 PostgreSQL
請確保 ServBay 已安裝並啟動 PostgreSQL 套件。 安裝 LoopBack 的 PostgreSQL 連接器:
bashnpm install --save @loopback/connector-postgresql
1並於專案設定資料源:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // 可用 url 方式,或分別設定 host、port、database host: 'localhost', // ServBay PostgreSQL 預設為本機 port: 5432, // PostgreSQL 預設埠 user: 'user', // << 請改為 ServBay 內設定的 PostgreSQL 用戶名稱 >> password: 'password', // << 請改為 ServBay 內設定的密碼 >> database: 'servbay_loopback_app', // 替換你的資料庫名稱 // 其他可選設定... }; export class PostgresqlDataSource extends juggler.DataSource { static dataSourceName = 'postgresql'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21提醒:上述
user: 'user'
password: 'password'
為占位示意,請在 ServBay 控制面板查找或建立 PostgreSQL 用戶並填入真實資訊。
總結
依照上述步驟,你已成功在 ServBay 本機開發環境建立、配置並運作了一個 LoopBack Node.js 專案。你已學會如何運用 ServBay「網站」功能經反向代理存取應用服務,以及在 LoopBack 專案內設定連線至各類由 ServBay 提供的資料庫服務。
ServBay 為 LoopBack 等 Node.js 框架提供穩定便利的本機開發環境,整合 Web 伺服器、資料庫及多語言執行環境,大大簡化開發流程。透過 ServBay 網站管理、SSL 支援與資料庫整合,能更高效且安全地進行本地開發測試。