一 概述
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 mongoldb 安装
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记录,如果能记录下接口的响应会更方便查看
- 对于有回调的接口,如果考虑在服务端配置回调适应场景会更广