环境
java 17
spring boot 3.1.3
knife4j-openapi3 4.1.0
主要的包
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>${knife4j-openapi3.version}</version>
</dependency>
成品展示
配置
Yml
# springdoc-openapi项目配置
springdoc:
swagger-ui:
# 可自定义路径
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
api-docs:
# 注意!!!如果有拦截器,过滤器判断接口请放开此接口
path: /v3/api-docs
knife4j:
## 是否为生产环境(false为可以访问接口文档地址,true为不可访问接口文档地址)
production: false
# 是否使用knife4j的增强功能
enable: true
setting:
swagger-model-name: 实体类列表
# 是否自定义底部栏
enable-footer-custom: true
# 自定义底部栏内容
footer-custom-content: spb3_demo
# 针对RequestMapping的接口请求类型,在不指定参数类型的情况下,如果不过滤,默认会显示7个类型的接口地址参数,如果开启此配置,默认展示一个Post类型的接口地址
enable-filter-multipart-apis: true
# 具体接口的过滤类型
enable-filter-multipart-api-method-type: GET
代码配置
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Author: dzg
* @Date: 2023/9/19 15:46
* @Describe: 美化界面地址,/{applicationName}/doc.html
* 来自:https://doc.xiaominfo.com/docs/quick-start
*/
@Configuration
public class OpenApiConfig {
@Bean
public OpenAPI customOpenApi() {
return new OpenAPI()
.info(new Info()
.title("spb3-demo")
.version("1.0")
// 作者
.contact(new Contact().name("dzg"))
// 描述
.description("spb3-demo Api接口文档")
// 服务条款网址-这里使用出处地址
.termsOfService("http://doc.xiaominfo.com")
// 许可证-这里使用出处信息
.license(new License().name("Apache 2.0")
.url("http://doc.xiaominfo.com")));
}
/**
* Yml配置分组示例
* springdoc:
* group-configs:
* - group: 'dzg-group1'
* paths-to-match: '/**'
* packages-to-scan: com.dzg.demo.controller.group1
* - group: 'dzg-group2'
* paths-to-match: '/**'
* packages-to-scan: com.dzg.demo.controller.group2
* @return
*/
@Bean
public GroupedOpenApi dzgGroup1() {
return GroupedOpenApi.builder()
.packagesToScan("com.dzg.demo.controller.group1")
.group("dzg-group1")
.pathsToMatch("/**")
.build();
}
@Bean
public GroupedOpenApi dzgGroup2() {
return GroupedOpenApi.builder()
.packagesToScan("com.dzg.demo.controller.group2")
.group("dzg-group2")
.pathsToMatch("/**")
.build();
}
}