swagger 集成方式之集中注册模式

792 阅读2分钟

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

哈喽大家好,我是阿Q!

上文中我们讲了knife4j给我们项目带来的问题,接着了解了gateway 文档聚合模式,本文我们来说一下集中注册模式!

集中注册模式

好吧,这个名字我瞎起的,不过自认为比较形象。具体技术架构如下图所示:

系统流程如下:

  1. 每个微服务启动的时候从nacoseureka等注册中心获取swagger注册中心服务的注册信息,然后调用swagger注册中心的接口,将swagger信息保存到数据库
  2. swagger注册中心集成knife4j,本身也是一个单独的微服务,其连接数据库并管理swagger文档
  3. 用户只能内网访问swagger注册中心,swagger注册中心从数据库取出swagger文档信息并通过knife4j渲染

需要注意的是swagger注册中心只部署开发环境或者公司局域网环境,我们公司局域网能直接访问开发环境。

集中注册模式的代码设计如下,这里搞两个单独的项目

项目名功能
swagger-spring-boot-starter客户端组件,微服务客户端使用封装好的该组件扫描项目中的swagger信息并上传到swagger注册中心
swagger-register-serverswagger注册中心,它接收微服务客户端上传的swagger信息并保存到数据库。用户请求查看文档的时候直接从数据库中取swagger文档

给大家留个问题,大家可以考虑下这两种方式的区别。在一切开始之前,我们还需要了解下swagger-ui的实现原理,下文精彩继续!

题外篇

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