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!!!

posted @ 2023-01-29 13:23  Fannaa  阅读(45)  评论(0)    收藏  举报