系統開發的過程中,假設前/後端分離的開發架構下, 前端難免會需要等待後端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
結語
快速、效率的時代, 我們需要的是簡單快速使用的功能, 能夠在最短期完成任務的工具都是好工具, 我們要學習的就是快速適應的能力, 就讓我們持續學習新工具快速適應變遷的環境吧!
--------------------------------------------------------------------------------
喜歡撰寫文章的你,不妨來了解一下:
Web3.0時代下為創作者、閱讀者打造的專屬共贏平台 - 為什麼要加入?
歡迎加入一起練習寫作,賺取知識,累積財富!
留言
張貼留言