啥是yapi
如果你会用百度,你会发现,yapi
是一个
高效、易用、功能强大的API管理平台。
但这次百度可能会骗你,因为你导航进去的yapi官网,是去哪网的一个demo,里边的页面都是demo。在页面的最下边,我找到了yapi的github地址。
总之,yapi是一个接口管理平台。搭建在内网上,你可以用它来管理你的接口。作为协作工具,可以减少前端和后端的沟通成本,让开发更快速更便捷。
搭建平台这件事,理应运维或者是后端来做,所以下边的内容,更适合这两类人群来阅读。如果你想要研究更多好玩的东西,就算你是保洁也可以看。
关于yapi的读法,可能它读作y-api,而不是夸你强得压批的ya-pi。
前置准备
Yapi需要nodejs(npm)和MongoDB,所以现在会演示如何安装。
下边的步骤在macOS下可用,Linux下同理,windows下没试过。
除了上边需要的两个硬性条件,还需要你
- 会用命令行
- 愿意动手
要是动手都不愿意动,不如现在打开和平精英,没必要强迫自己。
安装nodejs
前往nodejs官网,直接下载安装就行。
安装MongoDB
如果你有brew,那就直接执行
brew install mongodb
,然后喝口水就完事了。
如果你没有,那就点上边的链接进去安装。如果你不愿意看也不愿意动手,那你去世算了。
安装完了敲命令
brew services start mongodb
,启动MongoDB。
如果启动成功,控制台会提示你
$ brew services start mongodb
==> Successfully started `mongodb` (label: homebrew.mxcl.mongodb)
打开navicat
,新建链接,按下边的图填上地址。新安装的MongoDB应该是没有密码,所以不需要Authentication。MongoDB的端口默认是27017,你都沦落到看教程安装MongoDB了,我估计你也不能改这个默认端口。所以都按下边的图配置就行。
填好了连接一下试试,要是红了就是好使了。
这样一来你的前期准备就ok了,接下来安装yapi。
安装yapi
为了演示安装,我先卸载了yapi。由于你电脑里本来就没有yapi,所以这一步我就不写了,你也不用模仿,我们直接开始安装。安装教程在这,为了写这篇文章,我还是一步一步讲。
由于你安装了nodejs,那npm命令就可以用了。直接在控制台输入命令
npm install -g yapi-cli --registry https://registry.npm.taobao.org
丝毫不墨迹,就开始安装了。要是不出意外,控制台应该这样了。
$ sudo npm install -g yapi-cli --registry https://registry.npm.taobao.org
/usr/local/bin/yapi -> /usr/local/lib/node_modules/yapi-cli/bin/yapi-cli
/usr/local/bin/yapi-cli -> /usr/local/lib/node_modules/yapi-cli/bin/yapi-cli
+ yapi-cli@1.5.0
added 266 packages from 125 contributors in 11.511s
要是报错了,你sudo
一下子试试。由于-g
是全局安装,全局安装那个目录不一定有权限,所以sudo
一下就行了。要是怕踩坑,你就直接sudo
,反正多打个sudo
没害处。
按照教程,打命令
yapi server
控制台会提示
$ yapi server
在浏览器打开 http://0.0.0.0:9090 访问。非本地服务器,请将 0.0.0.0 替换成指定的域名或ip
他让我打开我就直接打开,然后浏览器显示
问题应该出在ip地址了,由于我在公司内网,我的内网ip是192.168.1.182
,于是我访问http://192.168.1.182:9090/
,果然安装页面出现了。
根据我们实际需求,填写这个问卷。
做完问卷调查,它就自己开始安装了。过程有点漫长,自己找点事干。
安装完了就有提示了,按照提示继续操作。切换到安装目录,把命令
node vendors/server/app.js
复制到命令行,启动服务。
控制台说
$ node vendors/server/app.js
log: -------------------------------------swaggerSyncUtils constructor-----------------------------------------------
log: 服务已启动,请打开下面链接访问:
http://127.0.0.1:3000/
log: mongodb load success...
打开地址访问,应该就好使了。
看到地址已经是本地的ip了,说明我们部署成功了。
先松一口气之后,我看到控制台好像还没敢大喘气呢。启动了服务之后,控制台会处于等待状态。于是我Ctrl+c
结束了进程,使用
vim ~/.bash_profile
编辑这个文件,在文件里加入一个函数
function startyapi {
cd /Volumes/Work/my-yapi
nohup node vendors/server/app.js &
}
使用:wq
保存,在控制台使用
source ~/.bash_profile
使刚才的改动生效。
在控制台输入
startyapi
可以看到已经在后台启动了。
$ startyapi
[2] 78163
appending output to nohup.out
如果想要关闭服务,可以使用
lsof -i tcp:3000
来查看端口占用。
$ lsof -i tcp:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 78163 hlp 22u IPv6 0x673f644c16150d2d 0t0 TCP *:hbci (LISTEN)
使用
sudo kill 78163 #这里是你具体查出来的PID
来结束进程,就关闭了yapi的服务。
配置解析
按上边配置完,你已经可以使用yapi的功能了。每次需要使用的时候,你都需要访问http://127.0.0.1:3000/
来使用。看看别人家,都用内网域名
http://yapi.company.com
了。不过你不用慌,接下来我们配置解析。
安装nginx
配置解析之前需要安装nginx服务器,如果你有brew,那就直接执行
brew install nginx
。或者去百度搜一搜nginx的安装教程。
配置hosts
使用命令
sudo vim /etc/hosts
编辑hosts,添加一行解析
127.0.0.1 yapi.company.com
。按:wq
保存。
这样配置完,所有来自yapi.company.com
的请求就都被发送到本地了。
配置nginx反向代理
一般安装完nginx如果你不乱动的话,配置文件在
/usr/local/etc/nginx/nginx.conf
在最后一个}
上边增加一行
include servers/*.conf;
,新建目录servers
,再新建文件yapi.company.com.conf
,把下边的配置信息粘贴进去。
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server{
listen 80;
server_name yapi.company.com;
charset utf-8;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;
proxy_read_timeout 120s;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
}
这样配置,就把所有80端口来的所有来自yapi.company.com
的请求都转发到http://127.0.0.1:3000
了。配置完之后使用
sudo nginx -s reload
重启nginx。打开浏览器访问,发现已经成功了。
总结
到这里安装完成,先总结安装步骤。
- 准备
- 准备brew
- 安装nodejs和MongoDB
- 准备好动手
- 安装
- 使用npm安装yapi-cli
- 进入yapi可视化页面自动安装
- 解析
- 编辑hosts
- 安装nginx(如果没有)
- 配置ngxin反向代理
总之yapi很好用,配置也不是很难。功能方面,除了记录api、省了一个接口文档,还能进行接口测试。接口按照参数填写在yapi上,可以直接运行。
下一步准备配置Pre-request Script(请求参数处理脚本)
。由于实际项目中,接口不一定是单传参数,还有签名以及token机制。这些都需要使用请求参数处理脚本。
然后准备配置swagger,从项目直接生成swagger-json,连接到yapi,就不用每次都手动填接口了。
这么多好玩的在等着我们,有什么好抑郁的呢。