温馨提示:
springBoot 版本 3.0+
knife4j 版本 4.1.0
添加依赖:knife4j包含了swagger,openapi3中的依赖,所以加这一个就行。
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.1.0</version>
</dependency>
<!--springBoot相关配置忽略-->
yml文件中配置:
#springdoc相关配置 springdoc: swagger-ui: path: /swagger-ui.html tags-sorter: alpha operations-sorter: alpha api-docs: path: /v3/api-docs group-configs: - group: 'hyc' paths-to-match: '/**' packages-to-scan: com.hyc #改成你自己的包名,一般到启动类的包名 #knife4j相关配置 可以不用改 knife4j: enable: true setting: language: zh_cn swagger-model-name: 实体类
配置类,主要是配置接口文档的主页信息,也可以写在yml文件中,这里是采用的配置类
package com.hyc.config;
import cn.hutool.core.util.RandomUtil;
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.customizers.GlobalOpenApiCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* Swagger配置
*/
@Configuration
public class SwaggerConfig {
/**
* 根据@Tag 上的排序,写入x-order
*
* @return the global open api customizer
*/
@Bean
public GlobalOpenApiCustomizer orderGlobalOpenApiCustomizer() {
return openApi -> {
if (openApi.getTags()!=null){
openApi.getTags().forEach(tag -> {
Map<String,Object> map=new HashMap<>();
map.put("x-order", RandomUtil.randomInt(0,100));
tag.setExtensions(map);
});
}
if(openApi.getPaths()!=null){
openApi.addExtension("x-test123","333");
openApi.getPaths().addExtension("x-abb",RandomUtil.randomInt(1,100));
}
};
}
@Bean
public OpenAPI customOpenAPI() {
return new OpenAPI()
.info(new Info()
.title("SpringCloud微服务系统API")
.version("1.0")
.contact(new Contact().name("hyc").url("www.baidu.com").email("XXXXX@163.com"))
.description( "SpringCloud微服务系统API")
.termsOfService("www.baidu.com")
.license(new License().name("Apache 2.0")
.url("www.baidu.com")));
}
}
然后,就可以启动测试输入地址http://ip:port/doc.html
注解的基本使用可以看下这里:swagger3注解和swagger2的区别
这里主要提下请求参数为文件的时候怎么写
@Parameter(name = "image", description = "图片文件", required = true,schema =@Schema(type = "file"))
在@Parameter参数注解里面加 schema = @Schema(type = "string", format = "binary")