当前位置:   article > 正文

Swagger2使用介绍_swagger2访问地址

swagger2访问地址

目录

 使用Swagger

 Swagger配置项

1、构建Docket时通过select()方法配置怎么扫描接口。

 2、根据包的路径扫描接口

3、配置接口扫描过滤

配置Swagger开关

实体配置(不配置也可)

请求的接口配置

常用注解

拓展:其他皮肤

SpringBoot集成Swagger

SpringBoot集成Swagger,springfox,两个jar包

● Springfox-swagger2

● swagger-springmvc

 使用Swagger

1、首先 spring boot 2.6版本以上无法正常使用swagger,我这里使用的2.8.0的版本

2、要求:jdk 1.8 + 否则swagger2无法运行

3、新建一个SpringBoot-web项目

4、添加pom依赖

  1. <!-- swagger2 的依赖-->
  2. <dependency>
  3. <groupId>io.springfox</groupId>
  4. <artifactId>springfox-swagger2</artifactId>
  5. <version>2.8.0</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>io.springfox</groupId>
  9. <artifactId>springfox-swagger-ui</artifactId>
  10. <version>2.8.0</version>
  11. </dependency>

5、编写一个配置类-SwaggerConfig来配置 Swagger

  1. package com.example.config;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import springfox.documentation.builders.ApiInfoBuilder;
  6. import springfox.documentation.builders.PathSelectors;
  7. import springfox.documentation.builders.RequestHandlerSelectors;
  8. import springfox.documentation.service.ApiInfo;
  9. import springfox.documentation.service.Contact;
  10. import springfox.documentation.spi.DocumentationType;
  11. import springfox.documentation.spring.web.plugins.Docket;
  12. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  13. import java.util.ArrayList;
  14. /**
  15. * Swagger2 接口测试工具
  16. */
  17. @Configuration
  18. @EnableSwagger2
  19. public class Swagger2Config {
  20. //访问地址:http://localhost:10086/swagger-ui.html
  21. @Value("${server.localhost.flag}")
  22. private String flag;
  23. boolean of = flag.equals("dev");
  24. @Bean
  25. public Docket api() {
  26. return new Docket(DocumentationType.SWAGGER_2)
  27. //方式一、二都可接入
  28. .apiInfo(apiInfo())
  29. //配置是否启用Swagger,如果是false,在浏览器将无法访问
  30. .enable(of)
  31. // 通过.select()方法,去配置扫描接口
  32. .select()
  33. //自行修改为自己项目下的controller路径,RequestHandlerSelectors配置如何扫描接口
  34. .apis(RequestHandlerSelectors.basePackage("com.example.controller"))
  35. //配置如何通过path过滤,我这里是获取全部
  36. .paths(PathSelectors.any())
  37. .build();
  38. }
  39. //方式一
  40. private ApiInfo apiInfo1() {
  41. return new ApiInfoBuilder()
  42. .title("swagger-api文档")
  43. .description("swagger接入教程")
  44. //服务条款网址
  45. .version("1.0")
  46. .build();
  47. }
  48. //方式二
  49. private ApiInfo apiInfo() {
  50. Contact contact = new Contact("王彦登", "http://localhost:10086/#/", "xxx@163.com");
  51. return new ApiInfo(
  52. "Swagger测试案例", // 标题
  53. "学习演示如何配置Swagger", // 描述
  54. "v1.0", // 版本
  55. "https://blog.csdn.net/m0_59278919?type=collect", // 组织链接
  56. contact, // 联系人信息
  57. "Apach 2.0", // 许可
  58. "https://blog.csdn.net/m0_59278919?type=collect", // 许可连接
  59. new ArrayList<>()// 扩展
  60. );
  61. }
  62. }

6、访问测试 :http://localhost:8080/swagger-ui.html ,可以看到swagger的界面;

 Swagger配置项

1、构建Docket时通过select()方法配置怎么扫描接口。

 2、根据包的路径扫描接口

 除了通过包路径配置扫描接口外,还可以通过配置其他方式扫描接口,这里注释一下所有的配置方式:

  1. //扫描所有,项目中的所有接口都会被扫描到
  2. any()
  3. //不扫描接口
  4. none()
  5. //通过方法上的注解扫描,如withMethodAnnotation(GetMapping.class)只扫描get请求
  6. withMethodAnnotation(final Class<? extends Annotation> annotation)
  7. //通过类上的注解扫描,如.withClassAnnotation(Controller.class)只扫描有controller注解的类中的接口
  8. withClassAnnotation(final Class<? extends Annotation> annotation)
  9. //根据包路径扫描接口
  10. basePackage(final String basePackage)

3、配置接口扫描过滤

 还可以选择

  1. //任何请求都扫描
  2. any()
  3. /任何请求都不扫描
  4. none()
  5. //通过正则表达式控制
  6. regex(final String pathRegex)
  7. //通过ant()控制
  8. ant(final String antPattern)

配置Swagger开关

1、通过enable()方法配置是否启用swagger,如果是false,swagger将不能在浏览器中访问了

  1. @Bean
  2. public Docket api() {
  3. return new Docket(DocumentationType.SWAGGER_2)
  4. //方式一、二都可接入
  5. .apiInfo(apiInfo())
  6. //配置是否启用Swagger,如果是false,在浏览器将无法访问
  7. .enable(false)
  8. // 通过.select()方法,去配置扫描接口
  9. .select()
  10. //自行修改为自己项目下的controller路径,RequestHandlerSelectors配置如何扫描接口
  11. .apis(RequestHandlerSelectors.basePackage("com.example.controller"))
  12. //配置如何通过path过滤,我这里是获取全部
  13. .paths(PathSelectors.any())
  14. .build();
  15. }

2、动态配置当项目处于dev、sit环境时显示swagger

① 在 application.properties中配置环境信息参数

  1. #当前环境
  2. server.localhost.flag=dev

② 通过@Value获取参数,进行参数判断

  1. // http://localhost:10086/swagger-ui.html#/test-controller
  2. @Value("${server.localhost.flag}")
  3. private String flag;
  4. //动态配置当项目处于dev、sit环境时显示swagger
  5. private List<String> cases = Arrays.asList("dev","sit");
  6. boolean of = cases.contains(flag);
  7. @Bean
  8. public Docket api() {
  9. return new Docket(DocumentationType.SWAGGER_2)
  10. //方式一、二都可接入
  11. .apiInfo(apiInfo())
  12. //配置是否启用Swagger,如果是false,在浏览器将无法访问
  13. .enable(of)
  14. // 通过.select()方法,去配置扫描接口
  15. .select()
  16. //自行修改为自己项目下的controller路径,RequestHandlerSelectors配置如何扫描接口
  17. .apis(RequestHandlerSelectors.basePackage("com.example.controller"))
  18. //配置如何通过path过滤,我这里是获取全部
  19. .paths(PathSelectors.any())
  20. .build();
  21. }

实体配置(不配置也可)

1、新建一个实体类

  1. package com.example.pojo;
  2. import io.swagger.annotations.ApiModel;
  3. import io.swagger.annotations.ApiModelProperty;
  4. import lombok.Data;
  5. @Data
  6. @ApiModel("用户实体")
  7. public class Student {
  8. @ApiModelProperty("主键ID")
  9. private Integer id;
  10. @ApiModelProperty("用户名称")
  11. private String studentName;
  12. }

2、注解定义

  1. @ApiModel为类添加注释
  2. @ApiModelProperty为类属性添加注释

请求的接口配置

  1. @RequestMapping(value = "/findAll",method = RequestMethod.GET)
  2. //接口的信息描述
  3. @ApiOperation(value="查询所有的学生信息", notes="返回的结果中有所有的结果集")
  4. public List<Student> findAll(){
  5. return studentService.findAll();
  6. }

常用注解

Swagger的所有注解定义在io.swagger.annotations包下

  1. @Api(tags = "xxx模块说明") 作用在模块类上
  2. @ApiOperation("xxx接口说明") 作用在接口方法上
  3. @ApiModel("xxxPOJO说明") 作用在模型类上:如VO、BO
  4. @ApiModelProperty(value = "xxx属性说明",hidden = true) 作用在类方法和属性上,hidden设置为true可以隐藏该属性
  5. @ApiParam("xxx参数说明") 作用在参数、方法和字段上,类似@ApiModelProperty

Swagger是个优秀的工具,现在国内已经有很多的中小型互联网公司都在使用它,相较于传统的要先出Word接口文档再测试的方式,显然这样也更符合现在的快速迭代开发行情。在正式环境要记得关闭Swagger,一来出于安全考虑二来也可以节省运行时内存。

拓展:其他皮肤

1、默认的访问 http://localhost:10086/swagger-ui.html

  1. <!-- 默认的访问 http://localhost:10086/swagger-ui.html-->
  2. <dependency>
  3. <groupId>io.springfox</groupId>
  4. <artifactId>springfox-swagger-ui</artifactId>
  5. <version>2.8.0</version>
  6. </dependency>

2、bootstrap-ui 访问 http://localhost:8080/doc.html

  1. <!-- 引入swagger-bootstrap-ui包 /doc.html-->
  2. <dependency>
  3. <groupId>com.github.xiaoymin</groupId>
  4. <artifactId>swagger-bootstrap-ui</artifactId>
  5. <version>1.9.1</version>
  6. </dependency>

3、mg-ui 访问 http://localhost:8080/document.html

  1. <!-- 引入swagger-ui-layer包 /document.html-->
  2. <dependency>
  3. <groupId>com.zyplayer</groupId>
  4. <artifactId>swagger-mg-ui</artifactId>
  5. <version>1.0.6</version>
  6. </dependency>

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

闽ICP备14008679号