使用场景: 最近给项目中写了一个日志框架,展现出调用信息之后,被要求非开发者也能看到每一个接口的调用情况,并且单独开一个页面在列表中展示.
思考: 单纯用日志框架记录日志的话用JoinPoint类取出相关的接口名等信息就可,但查询注释信息来展示的话之前还没有提取过,于是,想了两个方案:
第一.把所有的接口名和注释全部存到新建的表中,通过获取接口名来映射 ---此方法工作量太大,要把每一个接口手动添加到数据库,所以直接pass
第二.通过swagger注解的记录,在后置通知时调取接口的注释名,那就上代码吧.
Map<String, Object> map = new HashMap<>();
//获取api: 事件
Api api = joinPoint.getTarget().getClass().getAnnotation(Api.class);
if (Optional.ofNullable(api).isPresent()){
if (api.tags()!=null && api.tags().length>0){
for (String tag: api.tags()){log.info("===>>>api: "+tag);}
map.put("api", StringUtils.join(api.tags(),","));
}
}else {map.put("api", null);}
//获取apiOperation: 方法
MethodSignature ms = (MethodSignature)joinPoint.getSignature();
ApiOperation apiOperation = ms.getMethod().getDeclaredAnnotation(ApiOperation.class);
if (Optional.ofNullable(apiOperation).isPresent()){
if (StringUtils.isNotBlank(apiOperation.value())){
log.info("===>>>apiOperation: "+apiOperation.value());
map.put("apiOperation",apiOperation.value());
}
}else {map.put("apiOperation",null);}
API

ApiOperation

以上接口上方注释,各位如有更好的方法,或者除swagger以外的方法欢迎留言讨论,互相学习!
博主分享了在项目中创建日志框架后遇到的问题,需要让非开发者也能查看每个接口的调用情况。提出了两种方案:一是将所有接口信息存入数据库,但因工作量大而放弃;二是利用Swagger注解,在后置通知时获取接口注释并展示。文中给出了具体的代码实现,展示了如何获取`@Api`和`@ApiOperation`注解的信息。
3036

被折叠的 条评论
为什么被折叠?



