** Yapi接口变更时会发邮件通知给使用者,但这种变更是在Yapi平台手动变更接口。
而我们几乎不会手动去变更接口,都是通过定时拉取swagger更新接口的,
而swagger 更新的接口是不会去发邮件通知**
注:swagger自动更新无法做到删除接口
我们在Yapi装了一个通知插件,可以监测到swagger的变更,然后给指定的api接口
发送一个json通知,我们通过解析该通知来决定。
1. 是否发送通知
2. 发送给谁
3. 发送什么内容
我们的程序只处理三种通知,增、删、改
通过测试,观察通知内容,当文本:
包含了: [“为分类”,“添加了接口”]=增
包含了: [“更新了分类”,“下的接口”]=改
包含了: [“删除了分类”,“下的接口”]=删
是否发送通知?
改:在Yapi手动改接口Yapi系统会发邮件,不需要我们去发
通过变更用户来判断,是否要发送,观察到swagger自动更新的都是管理员用户
增、删:在Yapi手动删接口Yapi系统不会发邮件,需要我们去发
发送给谁?
增、删:在Yapi手动删接口Yapi系统不会发邮件,需要我们去发从根据项目ID从mongodb中取
表:project,follow
project:取项目成员
follow:取关注的人
邮箱会重复,合并去重,
发送什么内容?
参考Yapi自己发的邮件,取一些基本描述,
项目名,分类,接口,操作用户等, 大概能看明白哪里变了就行。
更加详细的变更内容下面加个链接就好了,链接到的地址就是项目的动态页面。
例:{项目id}/activity
发送频率控制
通知插件不会对通知做合并处理,也就每一个接口的,增,删,改都会有一个通知
那么就会有问题,我首次拉去swagger时候,几十上百个接口,每一个接口
都发一个通知发一条邮件,所以要做频率控制。
1.通知频率控制
直接修改插件的源码,合并一下通知。
2.首次拉去时不配通知地址,二次拉取再处理。
3.通知接收端n秒内发送过同样类型(项目+增类型)的邮件,忽略不发送
4.对通知数据进行存储,另起后台程序定时对消息合并(同项目),需重新设计邮件模版。
当前用的方案3