Swagger
springboot集成swagger
1、先导入依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
2、在application.yaml添加配置,由于springboot版本过高,会运行异常
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
3、编写SwaggerConfig
@Configuration
public class SwaggerConfig {
}
4、主启动类上添加注解@EnableOpenApi
@SpringBootApplication
@EnableOpenApi
public class SpringbootSwaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootSwaggerApplication.class, args);
}
}
5、运行访问http://localhost:8080/swagger-ui/index.html
6、配置Swagger
@Configuration
public class SwaggerConfig {
@Bean
public Docket docket(Environment environment){
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.groupName("Fan")
// .enable(false) enable:是否启动swagger,如果为false,浏览器不能访问
.select()
// RequestHandlerSelectors.basePackage("com.fan.controller") 配置要扫描接口的方式:扫描包
// any():扫描全部
// none():都不扫描
// withClassAnnotation():扫描类上的注解,参数是注解的反射对象
// withMethodAnnotation():扫描方法上的注解
.apis(RequestHandlerSelectors.basePackage("com.fan.controller"))
// 指定扫描的路径
// .paths(PathSelectors.ant("/"))
.build();
}
// 配置swagger信息
private ApiInfo apiInfo(){
// 作者信息
Contact contact = new Contact("Fan", "https://www.cnblogs.com/fanyaa", "210870125@qq.com");
return new ApiInfo("Fan的SwaggerAPI文档",
"2023/1/28学习",
"v1.0",
"https://www.cnblogs.com/fanyaa",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
7、pojo
@ApiModel("用户实体类")
public class User {
@ApiModelProperty("用户名")
public String username;
@ApiModelProperty("密码")
public String password;
}
8、HelloController
@RestController
public class HelloController {
@ApiOperation("Hello控制类")
@GetMapping("/hello")
public String hello(){
return "hello";
}
// 只要我们的接口中返回值存在实体类,它就会被扫描到swagger
@ApiOperation("user控制类")
@PostMapping("/user")
public String user(@ApiParam("用户名")String username){
return "hello"+username;
}
@ApiOperation("Post测试类")
@PostMapping("/post")
public User post(@ApiParam("用户") User user){
return user;
}
}
实现:我希望我的swagger在生产环境中使用,在发布的时候不使用?
1、判断是不是生产环境
2、注入enable()
先配置多环境,dev和pro
@Bean
public Docket docket(Environment environment){
Profiles profiles = Profiles.of("dev");
// 获取项目环境
boolean flag = environment.acceptsProfiles(profiles);
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.enable(flag);
}
实现:多人协作
@Bean
public Docket docket3(){
return new Docket(DocumentationType.OAS_30).groupName("C");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.OAS_30).groupName("B");
}
@Bean
public Docket docket1(){
return new Docket(DocumentationType.OAS_30).groupName("A");
}
【注意】:出于安全考虑,在正式发布的时候,关闭swagger!!!

浙公网安备 33010602011771号