SpringBoot-整合SwaggerAPI框架-13

SwaggerAPI框架

1.配置

  1. 导入pom.xml
 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

  1. HelloController
@RestController
public class HelloController {
    @RequestMapping(value = "/hello")
    public String hello(){
        return "hello";
    }
}
  1. 配置Swagger(在SwaggerConfig进行如下配置即可自定义swagger-ui.html页面)
@Component//等于Component
@EnableSwagger2//开启swagger2
public class SwaggerConfig {
    //配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo());
    }
    //1. 配置Swagger信息需要apiinfo()
    private ApiInfo apiInfo(){
        //作者信息
        Contact contact = new Contact("1f", "qwq", "xxxx@xx.xom");
        return new ApiInfo("1f的swaggerAPI文档",
                "1f",
                "1.0",
                "urn:tos",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}

2.Swagger扫描接口

  1. 需要在docket()方法中修改
//配置了Swagger的Docket的bean实例
    @Bean
    public Docket docket(Environment environment){


        //可以设置要显示的Swagger环境(实现开发环境使用Swagger,而生产环境不使用Swagger)
        Profiles profiles = Profiles.of("dev","test");
        //通过environments.acceptsProfiles判断是否处在自己设置的环境中
        boolean flag = environment.acceptsProfiles(profiles);


        //获取项目的环境:
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                //是否启动Swagger  false则不能启动不能再浏览器中访问  true就能在浏览器中访问
                .enable(flag)
                .select()
                //RequestHandlerSelectors:配置要扫描接口的方式
                //basePackage:指定要扫描的包
                    //any():扫描全部
                    //none():不扫描
                    //withClassAnnotation:扫描类上的注解,参数是一个注解的反射对象
                    //withMethodAnnotation:扫描方法的注解
                //不常用.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))//只会扫描类上有RestController注解的
                .apis(RequestHandlerSelectors.basePackage("com.sli.controller"))
                //paths():过滤什么路径,里面的方法和上面的相同
                //.paths(PathSelectors.ant("/sli/**"))
                .build(); //build建造者模式
    }

  1. 实现开发环境中使用Swagger,运行上线的时候不使用Swagger
public Docket docket(Environment environment){
//设置要显示的Swagger环境
Profiles profiles = Profiles.of("dev","test");
//获取项目的环境:判断是否处在自己设定的环境中
boolean flag = environment.acceptsProfiles(profiles);
}

.enable中也需要加入(flag)

以下是两个环境,dec为8081,pro为8082,在application.properties中配置了spring.profiles.active=dev的时候,访问:http://localhost:8081/swagger-ui.html#/hello-controller 会显示界面;
spring.profiles.active=pro的时候访问:http://localhost:8082/swagger-ui.html#/hello-controller 不会显示界面;
image


3. 如何给API文档分组

  1. 给api文档分组
    .groupName("sli")
  2. 如何配置多个组(多个环境)
//配置多个Docket实例
    @Bean
    public  Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("A");
    }
    @Bean
    public  Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("B");
    }
    @Bean
    public  Docket docket3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("C");
    }

启动访问了页面之后就可以看到image
3. 实体类配置

  1. 新建一个实体类
@ApiModel("用户实体")
public class User {
   @ApiModelProperty("用户名")
   public String username;
   @ApiModelProperty("密码")
   public String password;
}
  1. 常用的注解
  • @Api(模块的说明):作用在模块上
  • @ApiOperation(接口的说明):作用在接口上
  • @ApiModel(模型类上的说明):作用自模型类上
  • @ApiParam(参数说明):作用在参数,方法和字段上
posted @ 2021-09-30 20:20  1_f  阅读(18)  评论(0)    收藏  举报