其他分享
首页 > 其他分享> > Swagger的使用

Swagger的使用

作者:互联网

Swagger介绍及集成

1、新建一个SpringBoot Web项目

2、导入相关依赖

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>

3、编写一个Hello工程

4、配置Swagger(空的)

@Configuration//表明是一个配置类
@EnableSwagger2 //开启swagger2
public class SwaggerConfig {

}

5、配置Swagger,在配置类里面
①Swagger的Bean实例Docket,配置显示信息

@Bean
    public Docket docket(Environment environment){
        //题目:在生产环境中不使用swagger,测试环境中使用swagger
        //配置Swagger的Docket的Bean实例
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //RequestHandlerSelectors:配置要扫描接口的方式
                //basePackage:指定要扫描的包
                //any:扫描全部
                //none:不扫描
                //withClassAnnotation:扫描类上的注解,需要的参数是一个注解的反射对象
                .apis(RequestHandlerSelectors.basePackage("com.joy.swagger.controller"))
                //过滤什么路径
                //.paths(PathSelectors.ant("/joy/**"))
                .build()
                ;
    }

    private ApiInfo apiInfo(){
        Contact contact = new Contact("joy","http://baidu.com","2272698560@qq.com");
        return new ApiInfo(
                "joy",
                "Api Doc",
                "urn:tos",
                "http://www.baidu.com",
                contact,
                "Apache 2.0",
                "http://baidu.com",
                new ArrayList()
        );
    }

②配置扫描接口及开关

编写controller层

@RestController
public class HelloController {

    @GetMapping(value="/hello")
    public String hello(){
        return "hello";
    }
}

配置Docket

@Bean
    public Docket docket(Environment environment){

        //设置要显示的Swagger环境
        Profiles profiles = Profiles.of("dev","test");

        //题目:在生产环境中不使用swagger,测试环境中使用swagger
        //配置Swagger的Docket的Bean实例
        //获取项目的环境:通过environment.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:扫描类上的注解,需要的参数是一个注解的反射对象
                .apis(RequestHandlerSelectors.basePackage("com.joy.swagger.controller"))
                //过滤什么路径
                //.paths(PathSelectors.ant("/joy/**"))
                .build()
                ;
    }

分组的实现和接口注解及小结

①分组:多加几个Docket

    @Bean
    public Docket docket1(Environment environment){
        return new Docket(DocumentationType.SWAGGER_2).groupName("A");
    }

    @Bean
    public Docket docket2(Environment environment){
        return new Docket(DocumentationType.SWAGGER_2).groupName("B");
    }

    @Bean
    public Docket docket3(Environment environment){
        return new Docket(DocumentationType.SWAGGER_2).groupName("C");
    }

③编写实体类:User

public class User {
    private String username;
    private String password;
    
}

④为了使实体类在mould中显示,在Controller中返回

@RestController
public class HelloController {

    @GetMapping(value="/hello")
    public String hello(){
        return "hello";
    }

    //只要我们的接口中,返回值存在实体类,他就会被扫描到swagger中
    @PostMapping(value = "/user")
    public User user(){
        return new User();
    }

}

⑤可以在实体类中加注解,解释变量、方法、类,显示在页面上就会有解释

@ApiModel("用户实体类")
public class User {
    @ApiModelProperty("用户")
    private String username;
    @ApiModelProperty("密码")
    private String password;

}

⑥也可以在控制类中加接口注解,解释接口

    @ApiOperation("用户")
    @PostMapping(value = "/user")
    public User user(){
        return new User();
    }

标签:return,扫描,使用,new,Swagger,Docket,public
来源: https://www.cnblogs.com/joxgod/p/15586135.html