SpringBoot3。0集成SpringDoc
SpringBoot3.0集成SpringDoc1. pom配置2. OpenApi配置类3. 使用4. SpringDoc注解与SpringFox对比5. 演示项目
这里为什么要使用SpringDoc呢?是因为集成SpringFox只支持SpringBoot2.x,
而基于Swagger的SpringDoc的社区现在十分活跃,代码也在不断更新。
SpringFox自从2020年7月14号之后就不更新了。
YiYi项目学习教程1. pom配置 org.springdoc springdoc-openapi-starter-webmvc-ui 2.0.2 2. OpenApi配置类
这里和Swagger配置类似,主要是配置接口的标题、描述、版本信息、Authorizations权限等。
下面两个分组信息也可以根据项目自身进行配置即可。 import org.springdoc.core.models.GroupedOpenApi; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.ExternalDocumentation; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import io.swagger.v3.oas.models.security.SecurityScheme; /** * SpringDoc 配置类 * * @author Jack魏 * @since 2023/1/8 16:51 */ @Configuration public class OpenApiConfig { /** * SpringDoc 标题、描述、版本等信息配置 * * @return openApi 配置信息 */ @Bean public OpenAPI springDocOpenAPI() { return new OpenAPI().info(new Info() .title("YiYi API") .description("YiYi接口文档说明") .version("v0.0.1-SNAPSHOT") .license(new License().name("YiYi项目博客专栏") .url("https://blog.csdn.net/weihao0240/category_12166012.html"))) .externalDocs(new ExternalDocumentation() .description("码云项目地址") .url("https://gitee.com/jack0240/YiYi")) // 配置Authorizations .components(new Components().addSecuritySchemes("bearer-key", new SecurityScheme().type(SecurityScheme.Type.HTTP).scheme("bearer"))); } /** * demo 分组 * * @return demo分组接口 */ @Bean public GroupedOpenApi siteApi() { return GroupedOpenApi.builder() .group("demo接口") .pathsToMatch("/demo/**") .build(); } /** * sys 分组 * * @return sys分组接口 */ @Bean public GroupedOpenApi adminApi() { return GroupedOpenApi.builder() .group("sys接口") .pathsToMatch("/sys/**") .build(); } } 3. 使用
可以看到注解的方式和Swagger基本上一模一样,就是名字有所变化而已。 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.jack.yiyi.bean.SysUser; import com.jack.yiyi.service.sys.SysUserService; import com.jack.yiyi.util.Result; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; /** * 系统用户Controller控制类 * * @author Jack魏 * @since 2022-11-12 */ @Tag(name = "系统用户接口", description = "系统用户接口") @RestController @RequestMapping("/sys/user/") public class SysUserController { @Autowired private SysUserService sysUserService; /** * 注册后台系统用户 * * @param sysUser 前端注册信息 * @return 注册用户信息 */ @Operation(summary = "注册接口", description = "输入用户信息进行注册") @Parameters({ @Parameter(name = "account", description = "登录账号", required = true), @Parameter(name = "password", description = "密码", required = true) }) @PostMapping("register") public Result register(SysUser sysUser) { // 登录名参数校验 if (sysUser.getAccount() == null || "".equals(sysUser.getAccount())) { return Result.fail("注册用户名不能为空"); } // 密码参数校验 if (sysUser.getPassword() == null || "".equals(sysUser.getPassword())) { return Result.fail("密码不能为空"); } SysUser user = sysUserService.register(sysUser); if (user == null) { return Result.fail("注册失败!请更换登录名!"); } return Result.success("注册成功,欢迎您:" + sysUser.getAccount()); } }
通过上面的配置之后,启动项目即可,然后访问:
http://127.0.0.1:8181/yiyi/swagger-ui/index.html
因为此项目也配置了Security,所以先输入用户:user、密码:123456
登录
SpringDoc
接口调试
返回封装对象4. SpringDoc注解与SpringFox对比
官网地址:https://springdoc.org/v2/#migrating-from-springfox
SpringFox
SpringDoc
作用
@Api
@Tag
在controller类上声明接口
@ApiIgnore
@Parameter(hidden = true) 或 @Operation(hidden = true) 或 @Hidden
接口隐藏
@ApiImplicitParam
@Parameter
单个参数说明
@ApiImplicitParams
@Parameters
多个参数说明
@ApiModel
@Schema
对实体类说明
@ApiModelProperty(hidden = true)
@Schema(accessMode = READ_ONLY)
字段隐藏
@ApiModelProperty
@Schema
实体类字段说明
@ApiOperation(value = "foo", notes = "bar")
@Operation(summary = "foo", description = "bar")
接口方法说明
@ApiParam
@Parameter
单个参数说明
@ApiResponse(code = 404, message = "foo")
@ApiResponse(responseCode = "404", description = "foo")
返回说明 5. 演示项目
https://gitee.com/jack0240/YiYi
YiYi项目
丁俊晖剑指第15冠,颜丙涛力争第3冠,威廉姆斯冲英国公开赛2连冠北京时间9月12日消息,2022斯诺克英国公开赛即将开赛,中国一哥丁俊晖再次冲击排名赛第15冠。而大师赛冠军颜丙涛,也将向个人的第3个冠军头衔发起冲击。另外,卫冕冠军金左手马克威廉
可怕的冥王星被踢出太阳系行星行列,其实一点也不冤人类非常喜欢给各种天体取名,而这些天体往往也确实星如其名。就拿冥王星来说,这个名字听起来就有点不吉利,也难怪人们会发现它又可怕,又倒霉。恐怖而又神秘的冥王星那么,冥王星到底有多可怕
从轨道异常说起,太阳系第九颗行星存在吗当我还小的时候,太阳系有九大行星,但今天却只有八大行星。冥王星于1930年被发现,是太阳系的第九颗行星。但76年后的2006年,它被降级为矮行星,掉出了太阳系行星俱乐部。轨道异常让
英媒研究显示世界濒临多个灾难性气候临界点据英国卫报网站9月8日报道,一项重要研究显示,气候危机已令世界濒临多个灾难性临界点。研究显示,由于迄今为止人类活动导致全球气温上升1。1摄氏度,世界濒临五个危险的临界点。其中三个是
永动机发电机有什么意义?在现有的基础上,想要达到(永)久动机的效果,至少还有三个技术方面的障碍需要攻克,然而很显然,在现有已经公布的所谓有永动机功能的发明里面连一个也没有完成!看网络里面大家讨论的不亦乐乎
浙江最有名的5道菜,号称是浙菜之魂,每一道都是土豪菜浙江素有鱼米之乡美称,作为临海省份之一的它不仅有风景如画的名胜古迹,也必然有鲜美的食材,鱼虾类最盛产。浙江的美食很神奇,既秉承了江南的温婉柔和,又兼顾了一些豪迈奔放。在浙江你可以吃
原始时代美利坚分裂国萨尔瓦多丨刊中人原始时代的素食者世界上没有哪个地方可以找到像图林根州的布罗马克化石遗址那样保存如此完好的二叠纪足迹和化石骨骼。研究人员希望利用在那里发现的化石和痕迹探究一些原始恐龙如何变成食草动物
关于月亮女神的那些传说来源中国科普网独行月球电影剧照又到一年中秋赏月时,那么关于月亮的故事与想象又有哪些呢?实际上,关于月球的想象是建立在观测月球的基础上的,人类观测月球由来已久。早在公元前450年,古
六年了,人们仍没忘记月球上那只兔子9月10日是一年一度的中秋节。距离我们38万公里远的月球上,玉兔二号正在出差,这只中国兔兔是目前在月球上工作时间最长的月球车。三年多的时间里,它拍了不少美图,还对月球地形地貌矿物成
大气层消失,原因何在?巨大撞击威力无穷一个异形星球在一次巨大撞击中失去了大气层艺术家对附近的HD17255恒星系统发生的撞击的理解(图源麻省理工大学MarkA。Garlick)一项研究表明,天文学家可能第一次探测到遥远
刘小莹等GRL嫦娥五号玄武岩的硫同位素组成及其对月幔源区的制约从古至今,月球一直是人们心中的诗与远方,尤其是在中秋佳节,对皎皎明月的赞美更是不甚枚举。皓魄当空宝镜升,云间仙籁寂无声平分秋色一轮满,长伴云衢千里明。是宋代诗人李朴在中秋赏月时发出