一 概述
1.1 yapi
YApi 是高效、易用、功能強大的 api 管理平臺,旨在為開發、產品、測試人員提供更優雅的介面管理服務。可以幫助開發者輕鬆建立、釋出、維護 API,YApi 還為使用者提供了優秀的互動體驗,開發人員只需利用平臺提供的介面資料寫入工具以及簡單的點選操作就可以實現介面的管理。API統一管理維護,多人協作,支援原有API一鍵匯入和API文件匯出。可以將上一個API的請求引數或相應引數作為下一個API的請求引數,支援一鍵自動化測試,大大提升工作效率。
1.2 流程圖
1.3 特性
- 基於 Json5 和 Mockjs 定義介面返回資料的結構和文件,效率提升多倍
- 扁平化許可權設計,即保證了大型企業級專案的管理,又保證了易用性
- 類似 postman 的介面除錯
- 自動化測試, 支援對 Response 斷言
- MockServer 除支援普通的隨機 mock 外,還增加了 Mock 期望功能,根據設定的請求過濾規則,返回期望資料
- 支援 postman, har, swagger 資料匯入
- 免費開源,內網部署,資訊再也不怕洩露了
1.4 環境要求
- nodejs(7.6+)
- mongodb(2.6+)
- git
二 部署
2.1 node部署
yum -y install git
cd /data/software && wget https://npm.taobao.org/mirrors/node/v10.16.2/node-v10.16.2-linux-x64.tar.xz
tar -xf node-v10.16.2-linux-x64.tar.xz
mv node-v10.16.2-linux-x64 node
# 修改為root的許可權
chown root.root node -R
cat > /etc/profile.d/node.sh << EOF
export PATH=$PATH:/data/software/node/bin
EOF
source /etc/profile.d/node.sh
node -v
複製程式碼
2.2 mongodb 安裝
cat > /etc/yum.repos.d/mongodb.repo <<EOF
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/4.0/x86_64/
gpgcheck=0
enabled=1
EOF
yum clean all && yum makecache
yum -y install
# 配置路徑
mkdir -pv /data/mongod
chown mongod.mongod /data/mongod
/etc/mongod.conf
storage:
dbPath: /data/mongod
# 啟動
systemctl start mongod
systemctl enable mongod
複製程式碼
2.3 yapi部署
使用我們提供的 yapi-cli 工具,部署 YApi 平臺是非常容易的。執行 yapi server 啟動視覺化部署程式,輸入相應的配置和點選開始部署,就能完成整個網站的部署。部署完成之後,可按照提示資訊,執行 node/{網站路徑/server/app.js} 啟動伺服器。在瀏覽器開啟指定url, 點選登入輸入您剛才設定的管理員郵箱,預設密碼為 ymfe.org 登入系統(預設密碼可在個人中心修改)。
- 部署
npm install -g yapi-cli --registry https://registry.npm.taobao.org
yapi server
複製程式碼
- web介面部署
由於是在雲路由器下面,就沒設定mongod密碼
依賴庫安裝完成,正在初始化資料庫mongodb...
> yapi-vendor@1.8.1 install-server /data/my-yapi/vendors > node server/install.js
log: mongodb load success...
初始化管理員賬號成功,賬號名:"xxxx@anchnet.com",密碼:"ymfe.org"
部署成功,請切換到部署目錄,輸入: "node vendors/server/app.js" 指令啟動伺服器, 然後在瀏覽器開啟 http://127.0.0.1:9009 訪問
複製程式碼
- 升級
cd {專案目錄}
yapi ls //檢視版本號列表
yapi update //更新到最新版本
yapi update -v {Version} //更新到指定版本
複製程式碼
2.4 pm2守護程式
npm install pm2 -g
[root@devops-yapi my-yapi]# pm2 start "vendors/server/app.js" --name yapi
[PM2] Starting /data/my-yapi/vendors/server/app.js in fork_mode (1 instance)
[PM2] Done.
┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────┼──────────┤
│ yapi │ 0 │ 1.8.1 │ fork │ 32149 │ online │ 0 │ 0s │ 0% │ 14.1 MB │ root │ disabled │
└──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app
[root@devops-yapi my-yapi]# pm2 info yapi
Describing process with id 0 - name yapi
┌───────────────────┬─────────────────────────────────────┐
│ status │ online │
│ name │ yapi │
│ version │ 1.8.1 │
│ restarts │ 0 │
│ uptime │ 24s │
│ script path │ /data/my-yapi/vendors/server/app.js │
│ script args │ N/A │
│ error log path │ /root/.pm2/logs/yapi-error.log │
│ out log path │ /root/.pm2/logs/yapi-out.log │
│ pid path │ /root/.pm2/pids/yapi-0.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 0 │
│ exec cwd │ /data/my-yapi │
│ exec mode │ fork_mode │
│ node.js version │ 10.16.2 │
│ node env │ N/A │
│ watch & reload │ ✘ │
│ unstable restarts │ 0 │
│ created at │ 2019-08-12T11:35:02.441Z │
└───────────────────┴─────────────────────────────────────┘
Actions available
┌────────────────────────┐
│ km:heapdump │
│ km:cpu:profiling:start │
│ km:cpu:profiling:stop │
│ km:heap:sampling:start │
│ km:heap:sampling:stop │
└────────────────────────┘
Trigger via: pm2 trigger yapi <action_name>
Code metrics value
┌────────────────────────┬───────────┐
│ Heap Size │ 36.80 MiB │
│ Heap Usage │ 81.39 % │
│ Used Heap Size │ 29.95 MiB │
│ Active requests │ 0 │
│ Active handles │ 10 │
│ Event Loop Latency │ 0.51 ms │
│ Event Loop Latency p95 │ 49.22 ms │
└────────────────────────┴───────────┘
Divergent env variables from local env
Add your own code metrics: http://bit.ly/code-metrics
Use `pm2 logs yapi [--lines 1000]` to display logs
Use `pm2 env 0` to display environement variables
Use `pm2 monit` to monitor CPU and Memory usage yapi
複製程式碼
三 使用
3.1 專案/分組建立
首先建立專案,一個專案內可以建立多個分組,將成員加入進來
3.2 資料匯入匯出
支援postman集合匯入及swagger資料同步
3.3 環境配置
可以將公共的引數,或者域名建立多個環境,引數化方式方便切換
3.4 介面使用
- 傳送請求需要安裝外掛
- 傳送GET請求
- 傳送POST請求
3.5 自動化測試
將介面測試完成後可以儲存為測試集合,進行自動化測試
可以通過將第一個介面的params,或response中的body作為第二個介面的params實現自動化測試
測試中可以寫斷言
可以看每個介面的測試報告
服務端測試,是放在伺服器上執行請求
測試完成輸出報告3.6 介面mock
四 反思
個人覺得工具還是很好的工具,以下僅為個人在工作中使用對工具的評價,僅供參考。
4.1 優點
- 該工具簡單方便,扁平的許可權管理專案/分組方便快捷多人協作介面測試,減少前後端介面對接成本,打破前端以依賴後端介面的束縛
- 自動化測試及將引數mock配合備註/wiki,匯出介面文件,統一文件格式,無需額外維護介面
- 介面變更,通過測試更新介面文件,統一平臺管理無需維護更新多個文件
- web方式部署方便快捷
4.2 缺點
- 無法對介面請求進行response記錄,如果能記錄下介面的響應會更方便檢視
- 對於有回撥的介面,如果考慮在服務端配置回撥適應場景會更廣