自动收集系统api信息功能实践

        最近我们部门要做一个api store的项目,项目的其中一个目的就是将所有公司的项目的接口都收集起来。然后让我去研究相关技术。

技术解决的方式:

    1,Spring boot 的插件actuator ,具体步骤大家去网上看,很简单,只要去加载那个jar就可以了。它有很多监控点,大概如下

    

    我这边先访问一下/health接口,显示结果如下

    

注意的点:

actuator提供了一个/mappings,可以收集项目中所requestMapping修饰的接口。但是要注意的是除了/info,/health默认是要授权的,如果没有去改过默认配置是会出现404。修改配置之后的截图如下


第一个就是关闭endpoint的权限控制,第二就是打开/mappings的开关打开,然后基本上可以访问了。我的话当时改了还不行,是因为我当时改的配置是本地的配置,远程配置是关的状态,会覆盖本地状态的。如果你们这样改了之后还是不行,可能跟我一样就是配置没有生效,或者被覆盖了(如果有远程配置的话)

访问/mappings之后显示如下



2,原生态代码收集api数据

主要是从RequestMappingInfo,HandlerMethod对象里面取取相应的数据,主要代码如下(因为代码在云桌面里面,copy不下来,,勉强看一下截图)



简单说一下这两个对象吧,先说一下RequestMappingInfo,这个对象里面获取的数据,基本上就是你在数据requestMapping里面配置的value,method,consumes,products,params,heads这这几个值;而HandlerMethod类的话主要是获取一些方法的信息,显示的结果如下


还有那个入参名称我试过是显示不了的,只能知道入参类型,HandlerMethod类里面取出来入参名是“arg0”“arg1”这样的形式。我查过,好像这个类里面确实找不到的。但网上有另外的方式去拿到,JBOSS的JAVAssist类可以拿到,我没有去试过,大家可以去试一下。

3,利用swagger,springfox这种第三方的插件,获取api数据

    这个应该也很简单,自己去网上找整合swagger的文章。整合好之后,调用接口url:项目地址/swagger版本/api-docs,访问到数据,根据自己的需求去截取数据。



获取时机:

一定要在项目启动之后才能去执行这些代码,一下是我网上看到的,并试过的

http://www.jb51.net/article/125020.htm

各自利弊:

对于利弊,我们要从2个大方向出发:第一个就是对公司已有的项目,第二个就是新项目。为了对原有的项目尽可能的少改过,我们采用老项目用第2种,新项目用第三种

猜你喜欢

转载自blog.csdn.net/qq_18416057/article/details/79882645