SpringBoot实现Swagger接口响应信息自定义(二)

  上一篇SpringBoot实现Swagger接口响应信息自定义(一)讲到了实现Swagger接口响应信息自定义的初版解决方案,本篇讲述终版解决方案。

场景

  接口相关信息如路径、参数等数据可能来自枚举、模板文档、数据库等。

终版解决方案:依据swagger接口响应机制,重写swagger接口响应数据

  我们访问swagger-ui.html页面,看到的接口响应数据都是v2/api-docs接口返回的,如下图
SpringBoot实现Swagger接口响应信息自定义(二)_第1张图片
  找到这个接口定义,如下图
SpringBoot实现Swagger接口响应信息自定义(二)_第2张图片
SpringBoot实现Swagger接口响应信息自定义(二)_第3张图片
  这里有三个关键信息,已经用红框标出,含义是从缓存中取出Documentation,转换成Swagger,最后把Swagger序列化为Json响应。
  我们可以改造这个接口,重新定义响应的Swagger,这样我们的接口信息便可以自由定义并且可以开放接口,动态控制接口响应的信息。即在最后把Swagger序列化为Json响应之前,对Swagger进行改造,具体的处理不再贴出,这里提出需要注意的点,原则上只需要重写Swagger的paths和definitions即可,想要更准确一些,也可以把tags等也重写,不过无伤大雅了。

// TODO 处理swagger

return new ResponseEntity(jsonSerializer.toJson(swagger), HttpStatus.OK);

SpringBoot实现Swagger接口响应信息自定义(二)_第4张图片

新的需求

  我们想要对自定义的接口信息进行分组,可以进行权限控制、分组查询等操作,仅仅靠上述操作是无法实现了,如何解决这个问题呢?见下一篇SpringBoot实现Swagger接口响应信息自定义(三)

你可能感兴趣的:(Java)