【Mockoon工具箱】awesome API mocking簡介

Han
阿Han的圖文解字筆記
7 min readMay 31, 2023

上一篇我們有介紹「【Postman工具箱】 Mock Server簡介」,相信對於Mock Server的用途應該都具備一些基本概念了,那這次就來介紹一套免費開源的工具庫「Mockoon」並附帶安裝架設的方法,讓我們簡單輕鬆的上架我們的模擬API Server。

系統開發的過程中,假設前/後端分離的開發架構下, 前端難免會需要等待後端API開發完成才能進行, 再者若與其他廠商對接時, 系統就算已經開發完成也得等待廠商, 過程中就是不斷的「🕒 等等等…」這個卡住的地方就成為了效率的阻礙點, 其中的阻礙點就是「資料來源」, 如果我們能讓這個「資料來源」更快速的產生一個雛型(模擬假資料), 對於前/後端、第三方廠商、QA…來說一定會更加有效率, 這個「資料來源雛型」就相當於程式設計中的介面(Interface),規格訂好之後, 各自角色就依照這個介面(Interface)獨立作業, 減少依賴與等待的時間。

以下三個場景可以很清楚的知道Mockoon在其中扮演著什麼角色,讓原本環環相扣的合作過程能夠適當的分離,各自獨立完成作業,最終以最小幅度進行整合。

圖片來源
圖片來源
圖片來源

上一篇我們有介紹「【Postman工具箱】 Mock Server」可以快速的搭建出Mock API環境, 但可惜的是收費機制與私有化都較為不便, 因此這次就來介紹一套開源的Mock Server產品, 會選擇這套產品的主要原因如下:

圖片來源

最重要的是這一段官方的論述, 才做了這樣的推薦與選擇, 私有及離線相信是打造產品或者自架的CI/CD最重要的一個需求。

既然稱之為Mock, 代表著具備自動化模擬資料的能力, 而Mockoon整合了兩大重要元件, 分別是Handlebars, Faker.js 這兩套工具, 一個負責可程式化功能, 而另一個則是負責產生亂數資料。

圖片來源

下載Mockoon

官方網站在這裡「https://mockoon.com/」, 進入後有個「Download」, 文件也都撰寫的非常齊全, 各個平台的安裝方式都已經整理好在官方文件之中, 這邊就不多加贅述了。

支援的平台有Windows、Linux、Mac。

不過這是屬於設計API的工具安裝包, 至於怎麼啟動服務就需要搭配CLI工具囉, 以下的章節也會逐一介紹。

QuickStart

Step 1: 建立新的範本

圖片來源

預設就用Dark Mode的配色, 對於眼睛使用上是比較舒緩的,目前越來越多的軟體都開始採用這種預設配色了!

Step 2: 快速建立一個hello world 模擬API

簡單的兩個步驟快速完成一個API開發, 填上路徑資訊之後, 再設計回傳資料範本, 即可完成一份靜態的GET API, 當然比較複雜互動的部份我們可以留待後續章節逐一介紹。

圖片來源

Step 3: 更改一下port避免衝突

範本預設由3000 port啟動, 但我們本機若開發許多Web應用相信3000 port被佔用會是非常頻繁的事情, 因此我們就來試著改動啟動port綁定的部份。

圖片來源

另外也支援TLS的連線方式, 需要安全加密連線的應用也可以考慮加掛憑證並啟動。

Step 4: 啟動服務

左上角有個綠色的播放紐, 按下去之後就能啟動服務。

圖片來源

Step 5: 測試API

右上角有個開啟的按鈕, 但僅限於GET的部份, 打開之後就會直接帶到預設瀏覽器進行API的呼叫, 讓我們順利驗證結果。

圖片來源

最終我們會看到瀏覽器的Response就是我們設計的假資料, 工具是不是非常容易使用?

圖片來源

如何以Docker運行一個API模擬環境?

上述的範例很方便就能架設啟一個API服務, 但總是依賴於GUI, 而我們實際上的CI/CD環境甚至是Windows Server、Linux也都比較建議用CLI的方式來運行背景服務, 正好Mockoon也支援CLI,是以nodejs的npm進行安裝, 請參考「https://mockoon.com/cli/」, 但我們又不想在主機上隨意安裝額外套件時怎麼辦? 這時候直覺會想說如果有個虛擬沙盒該有多好, 嗯…, 正好Mockoon也有Docker image可以使用, 我們就以Docker方式來運行一個API模擬環境吧!

下載Docker Imane

docker pull mockoon/cli

以Docker運行API範本

只要將我們的範本掛載進Docker Container, 並將對應的port mapping, 如此就能快速運行模擬API。

docker run -d \\
--mount type=bind,source=/home/will/Downloads/test/test.json,target=/data,readonly \\
-p 10010:3000 mockoon/cli:latest --data data --port 3000

更方便的Docker化打包

上述的指令相當複雜吧! 又要對應port、又要掛載、又要指定掛載的資料夾, 隨著配置越來越多很容易導致配置錯誤讓程式無法順利運作, 因此Mockoon很貼心的設計一個讓我們將設計範本連同Docker Image一併打包的方式進行輸出。

mockoon-cli dockerize \\
--data ./sample-data.json \\
--port 3000 \\
--output ./tmp/Dockerfile

產生出來的Dockerfile會是這樣

FROM node:14-alpine

RUN npm install -g @mockoon/cli@2.1.0
COPY mockoon-test.json ./mockoon-test.json

# Do not run as root.
RUN adduser --shell /bin/sh --disabled-password --gecos "" mockoon
RUN chown -R mockoon ./mockoon-test.json
USER mockoon

EXPOSE 3000

ENTRYPOINT ["mockoon-cli", "start", "--hostname", "0.0.0.0", "--daemon-off", "--data", "mockoon-test.json", "--container"]

# Usage: docker run -p <host_port>:<container_port> mockoon-test

--

--