前言
springBoot3.0以上的版本没办法使用我们swagger的v2和v3的版本,只能使用spring提供的一个新的依赖,使用他的页面和我们正常的swagger的页面是一样的,只是引入的依赖不一样(使用的注解也发生了改变)
引入swagger
依赖
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.2.0</version>
</dependency>
<!-- 搭配校验使用,使用与SpringBoot相同的版本号 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>3.1.5</version>
</dependency>
swagger的配置类
@Configuration
public class SwaggerConfig {
@Bean
public OpenAPI swaggerOpenAPI(){
return new OpenAPI()
.info(new Info().title("oa流程控制")
.contact(new Contact())
.description("我的API文档")
.version("版本v.1")
.license(new License().name("Apache 2.0").url("https://xxxx.xxx.xxx")))
.externalDocs(new ExternalDocumentation()
.description("外部文档")
.url("https://xxxx.xxx.xxx"));
}
}
yaml配置(下面的也可以不加,默认的配置也是能加载出来的)
#如果不加下面配置,默认就是执行全部默认的配置
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
api-docs:
path: /v3/api-docs
group-configs:
- group: 'default'
paths-to-match: '/**' #默认扫描全部的接口
packages-to-scan: com.qtt.security #不加会默认扫描全部的包
接口定义
注意这里面的注解@api和@ApiOperation都发生了改变,具体的变化参考其他文章
@RestController
@Tag(name = "登录界面", description = "登录接口接口")
public class LoginController {
@Autowired
private ILoginService loginServcie;
@GetMapping("/user/register")
@Operation(summary = "注册", description = "注册")
public ResponseEntity<ResponseResult> register(@RequestParam("userName")String userName,
@RequestParam("password")String password) {
return loginServcie.register(userName,password);
}
@PostMapping("/user/login")
@Operation(summary = "登录", description = "登录")
public ResponseEntity<ResponseResult> login(@RequestBody User user){
return loginServcie.login(user);
}
@GetMapping("/user/logout")
@Operation(summary = "登出", description = "登出")
public ResponseEntity<ResponseResult> logout(){
return loginServcie.logout();
}
}
如果你使用了springSecurity一类的安全框架需要去设置放行我们的swagger
.requestMatchers("/swagger-ui/**",
"/doc.html",
"/webjars/**",
"/v3/api-docs/**",
"/swagger-resources/**").permitAll()
访问http://你的ip:你的接口/swagger-ui/index.html
使用knief4j的ui界面
swagger用着太难受了,还是knief4j或者他的前身swagger-bootstart-ui用着舒服,不过swagger-bootstart-ui好像不支持springBoot3.0也没提供解决办法(不确定,我没找到材料)
引入依赖
<!--添加knife4j依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
访问 http://你的ip:你的接口/doc.html