神器 SpringDoc 横空出世!最适合 SpringBoot 的 API 文档工具来了
之前在 SpringBoot 项目中一直使用的是 SpringFox 提供的 Swagger 库,上了下官网发现已经有接近两年没出新版本了!前几天升级了 SpringBoot 2.6.x 版本,发现这个库的兼容性也越来越不好了,有的常用注解属性被废弃了居然都没提供替代!无意中发现了另一款 Swagger 库 SpringDoc,试用了一下非常不错,推荐给大家!
SpringDoc 简介
SpringDoc 是一款可以结合 SpringBoot 使用的 API 文档生成工具,基于 OpenAPI 3,目前在 Github 上已有 1.7K+Star,更新发版还是挺勤快的,是一款更好用的 Swagger 库!值得一提的是 SpringDoc 不仅支持 Spring WebMvc 项目,还可以支持 Spring WebFlux 项目,甚至 Spring Rest 和 Spring Native 项目,总之非常强大,下面是一张 SpringDoc 的架构图。
使用
接下来我们介绍下 SpringDoc 的使用,使用的是之前集成 SpringFox 的 mall-tiny-swagger 项目,我将把它改造成使用 SpringDoc。
集成
首先我们得集成 SpringDoc,在 pom.xml 中添加它的依赖即可,开箱即用,无需任何配置。
从 SpringFox 迁移
我们先来看下经常使用的 Swagger 注解,看看 SpringFox 的和 SpringDoc 的有啥区别,毕竟对比已学过的技术能该快掌握新技术;
接下来我们对之前 Controller 中使用的注解进行改造,对照上表即可,之前在 @Api 注解中被废弃了好久又没有替代的 description 属性终于被支持了!
接下来进行 SpringDoc 的配置,使用 OpenAPI 来配置基础的文档信息,通过 GroupedOpenApi 配置分组的 API 文档,SpringDoc 支持直接使用接口路径进行配置。
结合 SpringSecurity 使用
由于我们的项目集成了 SpringSecurity,需要通过 JWT 认证头进行访问,我们还需配置好 SpringDoc 的白名单路径,主要是 Swagger 的资源路径;
然后在 OpenAPI 对象中通过 addSecurityItem 方法和 SecurityScheme 对象,启用基于 JWT 的认证功能。
测试
接下来启动项目就可以访问 Swagger 界面了,访问地址:http://localhost:8088/swagger-ui.html
我们先通过登录接口进行登录,可以发现这个版本的 Swagger 返回结果是支持高亮显示的,版本明显比 SpringFox 来的新;
然后通过认证按钮输入获取到的认证头信息,注意这里不用加 bearer 前缀;
之后我们就可以愉快地访问需要登录认证的接口了;
看一眼请求参数的文档说明,还是熟悉的 Swagger 样式!
常用配置
SpringDoc 还有一些常用的配置可以了解下,更多配置可以参考官方文档。
总结
在 SpringFox 的 Swagger 库好久不出新版的情况下,迁移到 SpringDoc 确实是一个更好的选择。今天体验了一把 SpringDoc,确实很好用,和之前熟悉的用法差不多,学习成本极低。而且 SpringDoc 能支持 WebFlux 之类的项目,功能也更加强大,使用 SpringFox 有点卡手的朋友可以迁移到它试试!
评论