长期以来我所在的开发团队和公司一直采用基于Restful API或者WebAPI为主的开发方式,对于RestfulAPI和Web API就需要相关的API测试工具和API文档工具以及团队协作工具,过去都是开发们自己使用了postman工具来进行的,但是缺点是postman工具缺少团队化也属于三方工具无法自己搭建,一直想寻找相关的工具,终于发现了YAPI这个套件。
YApi 是一个可本地部署的、打通前后端及QA的、可视化的接口管理平台 http://yapi.demo.qunar.com/ 它的Github站点为:
https://github.com/YMFE/yapi
特性
基于 Json5 和 Mockjs 定义接口返回数据的结构和文档,效率提升多倍
扁平化权限设计,即保证了大型企业级项目的管理,又保证了易用性
类似 postman 的接口调试
自动化测试, 支持对 Response 断言
MockServer 除支持普通的随机 mock 外,还增加了 Mock 期望功能,根据设置的请求过滤规则,返回期望数据
支持 postman, har, swagger 数据导入
免费开源,内网部署,信息再也不怕泄露了
这里因为公司服务器环境上都是采用docker进行部署的,这篇文章写下有关yapi docker部署的过程。
YAPI服务端存储的数据库是文档数据库mongodb,因此首先建立mongodb镜像并配置授权
docker run -d --name mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=xxx -e MONGO_INITDB_ROOT_PASSWORD=XXXXX -v /data/mongo:/data/db mongo
以上命令建立mongo并设置了文件存储路径。
下面是yapi docker镜像文件的制作。 yapi的依赖主要是nodejs,因此采用docker的node官方镜像为模板
先将下载到的yapi源码按照下图格式保存
其中confg.json是配置文件,Dockerfile是编译文件,先看下Dockerfile
FROM node:latest
ADD entrypoint.sh /usr/local/entrypoint.sh
COPY yapi /usr/local/yapi
RUN cd /usr/local/yapi/vendors && npm install --production --registry https://registry.npm.taobao.org && chmod 777 /usr/local/entrypoint.sh
EXPOSE 3000
ENTRYPOINT ["/usr/local/entrypoint.sh"]
看下入口的sh文件
#!/bin/bash
# yapi初始化后会有一个init.lock文件
lockPath="/usr/local/yapi/init.lock"
# 进入yapi项目
cd /usr/local/yapi/vendors
# 如果初始化文件文件存在,则直接运行,否则初始化
if [ ! -f "$lockPath" ]
then
# 启动Yapi初始化
node server/install.js
# 若是初始化成功的情况下直接运行yapi
node server/app.js
else
# 运行yapi管理系统
node server/app.js
fi
简单看下config文件
{
"port": "3000",
"adminAccount": "admin@admin.com",
"db": {
"servername": "mongo",
"DATABASE": "yapi",
"port": 27017,
"user": "xxxx",
"pass": "xxxx",
"authSource": "admin"
},
"mail": {
"enable": true,
"host": "xxx.xxx.com",
"port": 465,
"from": "xxx@xxx.com",
"auth": {
"user": "xxx@xxx.com",
"pass": "xxx"
}
}
}
在目录下运行docker build . -t yapi:1.7.0 并推到阿里云镜像点上
在服务器上运行如下命令,启动镜像:
docker run -d -v /data/mongo/:/data/db -p 27017:27017 --name=mongo registry.cn-shanghai.aliyuncs.com/xunzhao/mongo:latest
配置nginx转发3000端口关联域名完成配置。
本文为Lokie.Wang原创文章,转载无需和我联系,但请注明来自lokie博客http://lokie.wang