书写原因
在第一次跟团队完成项目时,作为后端,要编写接口文档,想到了之前学过的knif4j,就兴冲冲的开始的写代码,没想到在第一关就卡住了,上网查阅资料才得知,springboot3.xx版本已经不能够使用之前我学过的knife4j的版本了,于是开始了学习之旅
之前使用的版本
引入的依赖
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.2</version> </dependency>
书写的配置类
@Configuration @Slf4j public class WebMVCConfiguration extends WebMvcConfigurationSupport { @Bean public Docket docket1() { log.info("开始配置文档"); ApiInfo apiInfo = new ApiInfoBuilder() .title("搜索信息接口接口文档") .version("2.0") .description("搜索信息接口接口文档") .build(); Docket docket = new Docket(DocumentationType.SWAGGER_2) .groupName("接口") .apiInfo(apiInfo) .select() .apis(RequestHandlerSelectors.basePackage("com.demo.controller")) .paths(PathSelectors.any()) .build(); return docket; } /** * 设置静态资源映射 * @param registry */ protected void addResourceHandlers(ResourceHandlerRegistry registry) { log.info("开始配置静态资源"); registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); super.addResourceHandlers(registry); } }
此版本较用于springboot2.xx版本,起码idea我是找不到这个版本了
使用新版本
添加依赖
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.4.0</version> </dependency>
配置类的书写
@Configuration @Slf4j public class WebMVCConfiguration{ @Bean public OpenAPI customOpenAPI() { return new OpenAPI() .info(new Info() .title("SpringBoot API 管理") .contact(new Contact().name("N_007").email("xxxx@163.com").url("https://blog.csdn.net/N_007")) .version("1.0") .description("SpringBoot 集成 Knife4j 示例") .license(new License().name("Apache 2.0"))); } }
还加上了配置文件的书写
# springdoc-openapi项目配置 springdoc: group-configs: - group: 后端管理接口 packages-to-scan: com.demo.controller # knife4j的增强配置,不需要增强可以不配(建议配置一下) knife4j: enable: true setting: language: zh_cn
总结
一般都是固定代码,简要记住作用即可,会适当修改
补充
之前的api都不可以再使用了,有需要可自行查阅资料,这里不在赘述