配置Swagger


1、Swagger实例Bean是Docket,所以通过配置Docket实例来配置Swaggger


SwaggerConfig:

@Configuration
@EnableSwagger2// 开启Swagger2的自动配置
public class SwaggerConfig {

    @Bean //配置docket以配置Swagger具体参数
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo());
    }



    //配置Swagger信息=apiInfo
    private ApiInfo apiInfo(){

        //作者信息
        Contact contact = new Contact("卡卡发", "https://www.cnblogs.com/kakafa/", "1234567890@qq.com");

        return new ApiInfo(
                "mySwaggerApiDocument",
                "Api Documentation",
                "1.0",
                "https://www.cnblogs.com/kakafa/",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList<VendorExtension>());
    }

}


启动后:http://localhost:8080/swagger-ui.html


2、配置扫描接口


    @Bean //配置docket以配置Swagger具体参数
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //RequestHandlerSelectors:配置要扫描接口的方式;basePackage:指定要扫描的包
                //RequestHandlerSelectors.basePackage("com.kakafa.swaggerpra.controller")
                .apis(RequestHandlerSelectors.any())//代表扫描全部的包
                .paths(PathSelectors.ant("/kakafa/swaggerpra/config/**"))//过滤什么路径
                .build();
    }

3、配置Swagger开关


    @Bean //配置docket以配置Swagger具体参数
    //enable():是否启用swagger  .enable(false):则swagger不能在浏览器中使用
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(false)
                .select()
                .apis(RequestHandlerSelectors.any())//代表扫描全部的包
                .build();
    }

  • 如何动态配置当项目处于test、dev环境时显示swagger,处于prod时不显示?
@Bean //配置docket以配置Swagger具体参数
    public Docket docket(Environment environment) {

        //设置要显示的swagger环境
        Profiles profiles=Profiles.of("dev");
        //获取项目的环境
        boolean flag = environment.acceptsProfiles(profiles);//判断是否处在自己设定的环境中


        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .enable(flag)//是否启用swagger  .enable(false):则swagger不能在浏览器中使用
                .select()
                .apis(RequestHandlerSelectors.any())//代表扫描全部的包
                .build();
    }

当激活开发环境后:可以访问了


4、配置API分组


  • 如果没有配置分组,默认是default。


  • 通过groupName()方法即可配置分组
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("kakafa")
                .enable(flag)//是否启用swagger  .enable(false):则swagger不能在浏览器中使用
                .select()
                .apis(RequestHandlerSelectors.any())//代表扫描全部的包
                .build();


  • 如何配置多个分组?配置多个分组只需要配置多个docket即可
@Bean
public Docket docket1(){
   return new Docket(DocumentationType.SWAGGER_2).groupName("group1");
}
@Bean
public Docket docket2(){
   return new Docket(DocumentationType.SWAGGER_2).groupName("group2");
}
@Bean
public Docket docket3(){
   return new Docket(DocumentationType.SWAGGER_2).groupName("group3");
}

5、实体类配置


  • 新建一个实体类
@ApiModel("用户实体")
public class User {
   @ApiModelProperty("用户名")
   public String username;
   @ApiModelProperty("密码")
   public String password;
}


  • 只要这个实体在请求接口的返回值上(即使是泛型),都能映射到实体项中
@RequestMapping("/getUser")
public User getUser(){
   return new User();
}
  • 注意:并不是因为@ApiModel这个注解让实体显示在这里了,而是只要出现在接口方法的返回值上的实体都会显示在这里,而@ApiModel和@ApiModelProperty这两个注解只是为实体添加注释的


总结:






posted @ 2022-03-20 12:09  卡卡发  阅读(539)  评论(0)    收藏  举报