GitHub:https://github.com/YMFE/yapi
yapi 是什么
YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。提供了 api 文档管理,api 数据 模拟(Mock),调试和自动化测试 api 等功能可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。
主要解决前后端分离带来的以下痛点:
1、接口文档不可靠。很多小伙伴管理接口文档,有使用wiki的,有word文档的,甚至还有用聊天软件口口相传的,后端接口对于前端就像一个黑盒子,经常遇到问题是接口因未知原因增加参数了,参数名变了,参数被删除了。
2、mock 数据生成方案没有统一出口。我们都有这样的经历,前端开发功能依赖后端,解决方案有自己在代码注入json的,还有后端工程师临时搭建一套测试数据服务器,这种情况下势必会影响工作效率和代码质量,也不能及时进行更新。
3、资源分散,无法共享。接口调试每个开发者单独维护一套Postman接口集,每个人无法共用其他人的接口集,存在大量重复填写请求参数工作,最重要的是postman没法跟接口定义关联起来,导致后端没有动力去维护接口文档。
4、集成 api 自动化测试困难。yapi 提供了可视化的 api 自动化测试方案,只需要简单的填写参数,增加断言,就能实现 api 自动化测试。
YApi工作流:
特性
基于 Json5 和 Mockjs 定义接口返回数据的结构和文档,效率提升多倍
扁平化权限设计,即保证了大型企业级项目的管理,又保证了易用性
类似 postman 的接口调试
自动化测试, 支持对 Response 断言
MockServer 除支持普通的随机 mock 外,还增加了 Mock 期望功能,根据设置的请求过滤规则,返回期望数据
支持 postman, har, swagger 数据导入
免费开源,内网部署,信息再也不怕泄露了
内网部署(以RHEL/CentOS为例)
环境要求
nodejs(7.6+)
mongodb(2.6+)
安装nodejs
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
yum -y install nodejs
***如果没有编译环境,则需要yum install gcc-c++ make -y
安装配置MongoDB数据库
[@bx_70_32 /etc/yum.repos.d]# cat mongodb-org-3.6.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1
[@bx_70_32 /etc/yum.repos.d]# yum -y install mongodb-org
service mongod start
***netstat -tnlp | grep 27017 确认一下MongoDB服务是否启动
***/etc/mongod.conf根据需求可自行修改路径
初始化MongoDB数据库
[@bx_70_32 ~]# mongo
MongoDB shell version: 2.6.12
connecting to: test
> use yapi
switched to db yapi
> db.addUser('yapi','xxxxxx')
WARNING: The 'addUser' shell helper is DEPRECATED. Please use 'createUser' instead
Successfully added user: { "user" : "yapi", "roles" : [ "dbOwner" ] }
>show dbs
admin 0.078GB
local 0.078GB
yapi 0.078GB
安装与配置YApi工具
[@bx_70_32 /opt/apps_install]# mkdir yapi
[@bx_70_32 /opt/apps_install]# cd yapi/
解压,压缩包可以从上述GitHub下载需要的release版本
[@bx_70_32 /opt/apps_install/yapi]# tar zxvf yapi-1.3.7.tar.gz
安装yapi工具包
[@bx_70_32 /opt/apps_install/yapi]# cd yapi-1.3.7
[@bx_70_32 /opt/apps_install/yapi/yapi-1.3.7]# npm install -g yapi-cli --registry https://registry.npm.taobao.org
/usr/bin/yapi -> /usr/lib/node_modules/yapi-cli/bin/yapi-cli
/usr/bin/yapi-cli -> /usr/lib/node_modules/yapi-cli/bin/yapi-cli
+ yapi-cli@1.2.5
added 250 packages in 15.183s
修改配置文件
[@bx_70_32 /opt/apps_install/yapi/yapi-1.3.7]# cp config_example.json config.json
[@bx_70_32 /opt/apps_install/yapi/yapi-1.3.7]# vim config.json
"port": "3000",
"adminAccount": "admin@admin.com",
"db": {
"servername": "127.0.0.1",
"DATABASE": "yapi",
"port": 27017,
"user": "yapi",
"pass": "xxxxxx"
},
"mail": {
"enable": false,
"host": "smtp.163.com",
"port": 465,
"from": "***@163.com",
"auth": {
"user": "***@163.com",
"pass": "*****"
}
}
}
[@bx_70_32 /opt/apps_install/yapi/yapi-1.3.7]# vim server/yapi.js
const config = require('../config.json');
安装node模块
[@bx_70_32 /opt/apps_install/yapi/yapi-1.3.7]# npm install --production --registry https://registry.npm.taobao.org
> dtrace-provider@0.8.6 install /opt/apps_install/yapi/yapi-1.3.7/node_modules/dtrace-provider
> node-gyp rebuild || node suppress-error.js
make: Entering directory `/opt/apps_install/yapi/yapi-1.3.7/node_modules/dtrace-provider/build'
TOUCH Release/obj.target/DTraceProviderStub.stamp
make: Leaving directory `/opt/apps_install/yapi/yapi-1.3.7/node_modules/dtrace-provider/build'
> jsonpath@1.0.0 postinstall /opt/apps_install/yapi/yapi-1.3.7/node_modules/jsonpath
> node lib/aesprim.js > generated/aesprim-browser.js
npm WARN yapi@1.3.7 license should be a valid SPDX license expression
added 324 packages in 53.689s
安装yapi软件
[@bx_70_32 /opt/apps_install/yapi/yapi-1.3.7]# npm run install-server
> yapi@1.3.7 install-server /opt/apps_install/yapi/yapi-1.3.7
> node server/install.js
log: mongodb load success...
初始化管理员账号成功,账号名:"admin@admin.com",密码:"ymfe.org"
启动服务
[@bx_70_32 /opt/apps_install/yapi/yapi-1.3.7]# node server/app.js &
log: the server is start at 127.0.0.1:3000
log: mongodb load success...
访问http://ip:3000即可
另附上一个谷歌浏览器插件,后续在YApi调试接口中会用到 crossRequest
链接: https://pan.baidu.com/s/1HhVH5Dr8oGEnLB6S5h546w 密码: 15d7 ---绿色无毒,放心下载
代理方式:
如果是从nginx代理,请配置nginx支持websocket
在location /添加
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://ip:port;