SpringBoot集成Swagger

时间:2022-10-24 07:56:36

目录

1.Swagger产生的背景

2.Swagger的简介

3.SpringBoot集成Swagger的使用

1.Swagger需要springbox;

2.导入相关依赖

3.编写一个hello world

4.配置Swagger=>Config类

5.访问Swagger页面

6.自定义Swagger界面

4.Swagger的常见的问题如何解决?

1.问题:我只希望我的Swagger在生产环境中使用,在发布的时候不适用?

2.问题:如果有几个人同时开发写方法,我们如何进行分组呢?

5.对一些属性进行添加注解信息

1.实体的api注释

2. 控制层界面api

3.控制层中控制类以及参数的api

6.在Swagger的页面进行测试

总结:


1.Swagger产生的背景

前后端分离的流行(Vue+SpringBoot )我们在对接前后端的时候,都需要提供相应的接口文档。对于后端来说,编写接口文档即费时费力,还会经常因为没有及时更新,导致前端对接时出现实际接口与文档不一致。而且手写接口文档还容易出错,而swagger很好的解决了这个痛点。

2.Swagger的简介

  • Swagger号称世界上最流行的Api框架

  • RESTful Api 文档在线自动生成工具=>ApI文档与API定义自动更新

  • 直接运行,在线测试API接口

  • 支持多种语言:JAVA,PHP.等

3.SpringBoot集成Swagger的使用

1.Swagger需要springbox;

  • Swagger2

  • ui

2.导入相关依赖

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- 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>

3.编写一个hello world

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "hello world";

}

4.配置Swagger=>Config类

@Configuration
@EnableSwagger2//开启Swagger
public class SwaggerConfig {

}

5.访问Swagger页面

http://localhost:8080/swagger-ui.html

SpringBoot集成Swagger

6.自定义Swagger界面

@Configuration
@EnableSwagger2//开启Swagger
public class SwaggerConfig {
return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("朱笑笑")
                .enable(true)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.kuang.swagger.controller"))
                .build()
                ;
    }

//    配置Swagger基本信息,有用的话,也就是题目和标题罢了
    private ApiInfo apiInfo(){
        Contact contact = new Contact("笑笑","http://baidu.com/","2844509367@qq.com");
        return new ApiInfo(
                "朱笑笑的Swagger文档",
                "天边的天边",
                "v1.0",
                "http://baidu.com/",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }

4.Swagger的常见的问题如何解决?

1.问题:我只希望我的Swagger在生产环境中使用,在发布的时候不适用?

判断环境是否为测试环境,如果为测试环境则返回trun,否则为false
       Profiles profiles = Profiles.of("dev", "text");
       boolean flag = environment.acceptsProfiles(profiles);


获得boolean类型的flag之后再传入Docket的enable中即可

2.问题:如果有几个人同时开发写方法,我们如何进行分组呢?

创建多个的Dcoket,并对groupName进行命名即可
    @Bean
    public Docket docket1() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("赵层")
                ;
    }
    @Bean
    public Docket docket2() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("成求")
                ;
    }
    @Bean
    public Docket docket3() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("彬彬")
                ;
    }

5.对一些属性进行添加注解信息

1.实体的api注释


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

2. 控制层界面api

@Api("Hello控制类")
@RestController
public class HelloController {


 }

3.控制层中控制类以及参数的api

@ApiOperation("User控制类")
@PostMapping("/user")
    参数的api
    public User user(@ApiParam("用户名")String username) {
        return new User();
    }

6.在Swagger的页面进行测试

SpringBoot集成Swagger

 然后会显示相应的请求正确与错误,这样更有利于检查

总结:

  • 我们可以通过Swagger给一些比较难理解的属性或者接口,添加注释信息
  • 接口文档可实时更新
  • 可以在线测试
  • 可用了解可不了解,不是很紧要