当前位置:   article > 正文

SpringBoot整合Swagger_springboot搭建swagger

springboot搭建swagger

目录

一、swagger介绍

二、springboot集成swagger

1、创建一个springboot-web项目

2、导入相关依赖

3、编写一个Hellow工程

4、配置swagger --->config

5、启动springboot工程

6、配置swagger信息

7、配置swagger扫描接口

8、如何设置Swagger在生产环境中使用,在发布的时候不使用?

9、配置API文档分组

10、实体类配置


一、swagger介绍

swagger是一个接口文档生成工具,同时提供接口测试调用的辅助功能。

RestFul Api文档在线自动生成工具=>Api文档与API定义同步更新

直接运行,可以在线测试API接口;

支持多种语言: (Java,Php....)

官网:API Documentation & Design Tools for Teams | Swagger

二、springboot集成swagger

1、创建一个springboot-web项目

2、导入相关依赖

  1. <!--swagger 相关依赖 -->
  2. <dependency>
  3. <groupId>io.springfox</groupId>
  4. <artifactId>springfox-swagger2</artifactId>
  5. <version>2.9.2</version>
  6. </dependency>
  7. <!--swagger-ui.html模式 -->
  8. <dependency>
  9. <groupId>io.springfox</groupId>
  10. <artifactId>springfox-swagger-ui</artifactId>
  11. <version>2.9.2</version>
  12. </dependency>
  13. <!--doc.html模式 -->
  14. <dependency>
  15. <groupId>com.github.xiaoymin</groupId>
  16. <artifactId>swagger-bootstrap-ui</artifactId>
  17. <version>1.9.2</version>
  18. </dependency>

3、编写一个Hellow工程

4、配置swagger --->config

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

5、启动springboot工程

启动后访问:

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


或者访问:http://localhost:8080/doc.html

6、配置swagger信息

方式1:

  1. @Configuration
  2. @EnableSwagger2
  3. public class Swagger2Config {
  4. @Bean
  5. public Docket controllerApi() {
  6. return new Docket(DocumentationType.SWAGGER_2)
  7. .apiInfo(new ApiInfoBuilder()
  8. .title("标题:XX公司_XXXXX系统_接口文档")
  9. .description("描述:用于管理XXXXX,具体包括XXX,XXX模块...")
  10. .contact(new Contact("Socks", null, null))
  11. .version("版本号:1.0")
  12. .build())
  13. .select()
  14. .apis(RequestHandlerSelectors.basePackage("kgc.cn"))
  15. .paths(PathSelectors.any())
  16. .build();
  17. }
  18. }

 方式二:

  1. @Configuration
  2. @EnableSwagger2
  3. public class Swagger2Config {
  4. //配置swagger的Docket的bean实例
  5. @Bean
  6. public Docket controllerApi() {
  7. return new Docket(DocumentationType.SWAGGER_2)
  8. .apiInfo(apiInfo());
  9. }
  10. //配置swagger信息=apiinfo
  11. private ApiInfo apiInfo(){
  12. //作者信息
  13. Contact contact = new Contact("张三","","");
  14. return new ApiInfo(
  15. "swaggerAPI接口文档",
  16. "辛勤铸就梦想,付出就有回报。",
  17. "1.0",
  18. "https://blog.csdn.net/qi341500?spm=1000.2115.3001.5343",
  19. contact,
  20. "Apache 2.0",
  21. "http://www.apache.org/licenses/LICENSE-2.0",
  22. new ArrayList()
  23. );
  24. }
  25. }

 效果:

7、配置swagger扫描接口

  1. @Bean
  2. public Docket controllerApi() {
  3. return new Docket(DocumentationType.SWAGGER_2)
  4. .apiInfo(apiInfo())
  5. .select()
  6. // RequestHandlerselectors,配置要扫描接口的方式
  7. // basePackage:指定要扫描的包
  8. // any():扫描全部
  9. //none():不扫描
  10. //withclassAnnotation:扫描类上的注解,参数是一个注解的反射对象
  11. // withMethodAnnotation:扫描方法上的注解
  12. .apis(RequestHandlerSelectors.basePackage("cn.micro.myboot.controller"))
  13. //paths()过滤路径
  14. .paths(PathSelectors.ant("/book/**"))
  15. .build();
  16. }

配置swagger是否启动:enable()

  1. @Bean
  2. public Docket controllerApi() {
  3. return new Docket(DocumentationType.SWAGGER_2)
  4. .apiInfo(apiInfo())
  5. //enable是否启动Swagger,如果为False,则Swagger不能再浏览器中访问
  6. .enable(false)
  7. .select()
  8. .apis(RequestHandlerSelectors.basePackage("cn.micro.myboot.controller"))
  9. //.paths(PathSelectors.ant("/book/**"))
  10. .build();
  11. }

8、如何设置Swagger在生产环境中使用,在发布的时候不使用?

判断是不是生产环境flag = false

注入enable (flag;)

步骤:

1、配置多个生产环境

2、读取生产环境

  1. @Bean
  2. public Docket controllerApi(Environment environment) {
  3. //设置要显示的Swagger环境
  4. Profiles profiles = Profiles.of("dev","test");
  5. //通过environment.acceptsProfiles判断是否处在自己设定的环境当中
  6. boolean flag = environment.acceptsProfiles(profiles);
  7. return new Docket(DocumentationType.SWAGGER_2)
  8. .apiInfo(apiInfo())
  9. //enable是否启动Swagger,如果为False,则Swagger不能再浏览器中访问
  10. .enable(flag)
  11. .select()
  12. .apis(RequestHandlerSelectors.basePackage("cn.micro.myboot.controller"))
  13. //.paths(PathSelectors.ant("/book/**"))
  14. .build();
  15. }

9、配置API文档分组

groupName()

  1. @Bean
  2. public Docket controllerApi(Environment environment) {
  3. //设置要显示的Swagger环境
  4. Profiles profiles = Profiles.of("dev","test");
  5. //通过environment.acceptsProfiles判断是否处在自己设定的环境当中
  6. boolean flag = environment.acceptsProfiles(profiles);
  7. return new Docket(DocumentationType.SWAGGER_2)
  8. .apiInfo(apiInfo())
  9. .groupName("张三")
  10. //enable是否启动Swagger,如果为False,则Swagger不能再浏览器中访问
  11. .enable(flag)
  12. .select()
  13. .apis(RequestHandlerSelectors.basePackage("cn.micro.myboot.controller"))
  14. //.paths(PathSelectors.ant("/book/**"))
  15. .build();
  16. }

配置多个分组,创建多个Docket实例即可

  1. @Bean
  2. public Docket docket1(){
  3. return new Docket(DocumentationType.SWAGGER_2).groupName("A");
  4. }
  5. @Bean
  6. public Docket docket2(){
  7. return new Docket(DocumentationType.SWAGGER_2).groupName("B");
  8. }
  9. @Bean
  10. public Docket docket3(){
  11. return new Docket(DocumentationType.SWAGGER_2).groupName("C");
  12. }

10、实体类配置

只要接口中返回值存在实体类,实体类就会被扫描到swagger中

  1. //只要接口中返回值存在实体类,实体类就会被扫描到swagger中
  2. @GetMapping("/user")
  3. public User user(){
  4. return new User();
  5. }

 实体类:@ApiModel():给实体类添加注释,@ApiModelProperty()给属性添加注释

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

 给方法添加注释:@ApiOperation()

  1. @ApiOperation("给方法添加注释")
  2. @GetMapping("/user")
  3. public User user(){
  4. return new User();
  5. }

 给参数加注释@ApiParam() 

  1. @ApiOperation("给方法添加注释")
  2. @GetMapping("/user")
  3. public User user(@ApiParam("给参数加注释") String username){
  4. return new User();
  5. }

 ​​​

设置请求参数:@ApiImplicitParam(name = "uid", value = "用户ID", paramType = "String")

  1. @ApiOperation(value = "首页")
  2. @ApiImplicitParam(name = "uid", value = "用户ID", paramType = "String")
  3. @RequestMapping(value = "login.do",method = {RequestMethod.GET,RequestMethod.POST})
  4. public BaseResponse<String> login(String uid){
  5. return RespGenerator.returnOK("成功");
  6. }

总结:

1、我们可以通过Swagger给一些比较难理解的属性或者接口,增加注释信息

⒉、接口文档实时更新

3、可以在线测试
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/939829
推荐阅读
相关标签
  

闽ICP备14008679号