飞道的博客

SpringBoot集成Swagger

399人阅读  评论(0)

目录

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.导入相关依赖


  
  1. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
  2. <dependency>
  3. <groupId>io.springfox </groupId>
  4. <artifactId>springfox-swagger2 </artifactId>
  5. <version>2.9.2 </version>
  6. </dependency>
  7. <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
  8. <dependency>
  9. <groupId>io.springfox </groupId>
  10. <artifactId>springfox-swagger-ui </artifactId>
  11. <version>2.9.2 </version>
  12. </dependency>

3.编写一个hello world


  
  1. @RestController
  2. public class HelloController {
  3. @GetMapping("/hello")
  4. public String hello () {
  5. return "hello world";
  6. }

4.配置Swagger=>Config类


  
  1. @Configuration
  2. @EnableSwagger2 //开启Swagger
  3. public class SwaggerConfig {
  4. }

5.访问Swagger页面

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

6.自定义Swagger界面


  
  1. @Configuration
  2. @EnableSwagger2 //开启Swagger
  3. public class SwaggerConfig {
  4. return new Docket(DocumentationType.SWAGGER_2)
  5. .apiInfo(apiInfo())
  6. .groupName( "朱笑笑")
  7. .enable( true)
  8. .select()
  9. .apis(RequestHandlerSelectors.basePackage( "com.kuang.swagger.controller"))
  10. .build()
  11. ;
  12. }
  13. // 配置Swagger基本信息,有用的话,也就是题目和标题罢了
  14. private ApiInfo apiInfo (){
  15. Contact contact = new Contact( "笑笑", "http://baidu.com/", "2844509367@qq.com");
  16. return new ApiInfo(
  17. "朱笑笑的Swagger文档",
  18. "天边的天边",
  19. "v1.0",
  20. "http://baidu.com/",
  21. contact,
  22. "Apache 2.0",
  23. "http://www.apache.org/licenses/LICENSE-2.0",
  24. new ArrayList());
  25. }

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

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


  
  1. 判断环境是否为测试环境,如果为测试环境则返回trun,否则为 false
  2. Profiles profiles = Profiles.of( "dev", "text");
  3. boolean flag = environment.acceptsProfiles(profiles);
  4. 获得 boolean类型的flag之后再传入Docket的enable中即可

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


  
  1. 创建多个的Dcoket,并对groupName进行命名即可
  2. @Bean
  3. public Docket docket1 () {
  4. return new Docket(DocumentationType.SWAGGER_2)
  5. .apiInfo(apiInfo())
  6. .groupName( "赵层")
  7. ;
  8. }
  9. @Bean
  10. public Docket docket2 () {
  11. return new Docket(DocumentationType.SWAGGER_2)
  12. .groupName( "成求")
  13. ;
  14. }
  15. @Bean
  16. public Docket docket3 () {
  17. return new Docket(DocumentationType.SWAGGER_2)
  18. .groupName( "彬彬")
  19. ;
  20. }

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

1.实体的api注释


  
  1. @ApiModel("用户实体类")
  2. public class User {
  3. @ApiModelProperty("用户名")
  4. private String username;
  5. @ApiModelProperty("密码")
  6. private String password;
  7. }

2. 控制层界面api


  
  1. @Api("Hello控制类")
  2. @RestController
  3. public class HelloController {
  4. }

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


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

6.在Swagger的页面进行测试

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

总结:

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

转载:https://blog.csdn.net/qq2844509367/article/details/127465700
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场