Skip to content

Rap2定制开发需求整理

DongGuoChao edited this page Aug 25, 2018 · 2 revisions

本篇记录了一下我结合我们公司的现状整理的一些思路。这些思路已经在规划中,或者已经在实现了,如果以后有机会会提供一些代码,基本上都是通过扫库搞定的。

1.添加Hooks

目前我们公司会根据rap2进行开发工作的包含后端、前端和测试的同学。为了减少大家的沟通,大家都会严格根据rap的定义进行各自的开发。为了能够监听到接口发生变化,在仓库上允许开发者添加钩子,主要目的是及时感知接口变化,以调整各自的代码实现。当然,如果通知太频繁,可能也会出现问题,后期将会针对这种情况进行完善。

实现

扫库。

  • 新增RepositoryHash表,字段:[id, repository_id, repository_hash, updatetime]
  • 当用户编辑接口后,根据repository读取数据库中,所有的request和response参数和url,将请求体和响应转为HashMap(去掉描述,规则,初始值等无关项),将HashMap按照key的ascii排序,然后算出hash摘要,存Hash表中。(参考了支付宝等支付平台,请求参数验签的过程)。
  • 如果算出,当次hash和上一次不同(updatetime最新的为上一次),表示产生了改变,将消息推送到mq中或单独用表记录。
  • 按照一定策略,推送给相关监听方

2.未记录接口感知

由于我们使用的是Spring,spring在启动后,可以获取到所有开放的requestUrl,对比项目的url列表是否在rap中均已记录。有利于测试团队做接口覆盖率的统计,提醒习惯不好的开发者及时补充rap文档。

实现

  • 获取应用启动后暴露的requestUrl。由于我们公司采用的公司自己的框架,所有应用都无感知,否则需要开发者自己百度一下如何获取spring的requestUrl列表。
  • 对比rap2和requestUrl。
  • 通知

3.参数规范检查

这个简单,通过程序扫库,检查命名是否符合公司规范即可。每个公司规范不一样,这里就不详细描述了。可以作为一个CI检查项,在我们公司如果接口参数不符合规范是要挨批的。

4.Dashboard

根据一些维度,统计一些数据,作为管理者量化工作量的一个参考。比如,某人修改接口的数量,次数,某个阶段某个仓库变化的接口数量。目前rap2提供的统计页面,作用不是太大,可以根据公司自己的需求,在更细粒度上进行统计。

5.邮件提醒

主要针对第一项,hook是每个人主动添加的,邮件提醒属于被动的功能。会通过邮件的方式,将前一天仓库变化的内容大概信息,邮件通知到仓库成员中。完成开发后公司开发人员每天上班检查邮件的时候,可以查看一下自己负责的项目昨天是否被人改变了。所以我们在进行注册的时候都要求所有人填写正确的姓名和邮箱。

6.多版本支持

目前rap2不支持多版本。可以按照以下思路进行一些尝试。

实现

使用kv数据库(mongo之类),在仓库的参数发生变化时,记录仓库的全量数据。在某些时候如果需要重现某个版本的接口,则解析kv库,将参数导入到rap2查看(目前rap2的导入方式还比较欠缺),查看完毕后清理掉数据。更原始的方式就通过记事本,通过搜索定位自己关心的接口,肉眼对比变化...