API統一管理平臺-YApi

一 概述

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 登陸系統(默認密碼可在我的中心修改)。node

  • 部署
npm install -g yapi-cli --registry https://registry.npm.taobao.org
yapi server 
複製代碼
  • web界面部署

因爲是在雲路由器下面,就沒設置mongod密碼linux

依賴庫安裝完成,正在初始化數據庫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 項目/分組建立

首先建立項目,一個項目內能夠建立多個分組,將成員加入進來git

3.2 數據導入導出

支持postman集合導入及swagger數據同步github

3.3 環境配置

能夠將公共的參數,或者域名建立多個環境,參數化方式方便切換web

3.4 接口使用

  • 發送請求須要安裝插件

  • 發送GET請求

查看響應

  • 發送POST請求

3.5 自動化測試

將接口測試完成後能夠保存爲測試集合,進行自動化測試mongodb

能夠經過將第一個接口的params,或response中的body做爲第二個接口的params實現自動化測試shell

測試中能夠寫斷言數據庫

能夠看每一個接口的測試報告npm

服務端測試,是放在服務器上運行請求

測試完成輸出報告

3.6 接口mock

四 反思

我的以爲工具仍是很好的工具,如下僅爲我的在工做中使用對工具的評價,僅供參考。

4.1 優勢

  • 該工具簡單方便,扁平的權限管理項目/分組方便快捷多人協做接口測試,減小先後端接口對接成本,打破前端以依賴後端接口的束縛
  • 自動化測試及將參數mock配合備註/wiki,導出接口文檔,統一文檔格式,無需額外維護接口
  • 接口變動,經過測試更新接口文檔,統一平臺管理無需維護更新多個文檔
  • web方式部署方便快捷

4.2 缺點

  • 沒法對接口請求進行response記錄,若是能記錄下接口的響應會更方便查看
  • 對於有回調的接口,若是考慮在服務端配置回調適應場景會更廣

五 參考連接

相關文章
相關標籤/搜索