魔改swagger,knife4j 的另外一种打开方式(二)

399 阅读2分钟

「这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战」。

哈喽大家好,我是阿Q!

上文中我们已经讲解了搭建 swagger 注册中心的相关内容,本文我们将要讲解如何搭建 swagger-starter, 来完成客户端的搭建。

项目源代码:https://gitee.com/kdyzm/swagger-spring-boot-starter

设计上,要求做到微服务客户端只需要引入组件jar包,然后配置文件配置一些swagger的基本信息,服务启动之后就能自动上传swagger文档到swagger注册中心,具体技术细节,应当包含如下功能

  • 能够实现swagger文档的完整上传,其效果和直接请求本地的/v2/api-docs一样
  • 支持服务发现swagger注册中心以及swagger注册中心url配置两种方式
  • 客户端能够以springboot starter方式自动配置实现无代码侵入式生效
  • swagger-spring-boot-starter客户端组件同时兼容eurekanacos

swagger文档的扫描和上传

上面分析过/v2/api-docs的实现原理,利用它的实现原理,可以轻松获取到Swagger对象

swagger-spring-boot-starterSwaggerMvcGeneratorgetSwagger()方法

上传的话,根据配置文件中是否配置serverUrl决定采用服务发现方式还是直接请求方式上传Swagger信息

swagger-spring-boot-starterSwaggerRegistryServiceregistry()方法

springboot starter支持

这个非常简单,在resources/META-INF目录下新建文件并配置好即可。

兼容注册中心

swagger-spring-boot-starter不依赖nacos client或者eurka client,而是依赖了它们的公共接口模块spring-cloud-commons

实际上nacos client或者eureka client均是该模块的具体实现,所以swagger-spring-boot-starter可以兼容两种客户端服务发现组件的实现,但是服务端因为具体依赖了某种服务发现组件,在我这里默认使用nacos,如果要用eureka需要自行改造。

下文中我们要将注册中心和starter应用于实战中,敬请期待!

题外篇

阿Q将持续更新java实战方面的文章,感兴趣的可以关注下公众号:阿Q说代码,也可以来技术群讨论问题呦,点赞之交值得深交!