• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SpringBoot-整合Swagger

武飞扬头像
JagTom
帮助1

Swagger

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

  • Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新

  • 直接运行,在线测试API

  • 支持多种语言 (如:Java,PHP等)

  • 官网:https://swagger.io/

1.导入maven依赖

  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>

2.编写Swagger配置类

  1.  
    @Configuration
  2.  
    @EnableSwagger2
  3.  
    public class SwaggerConfig {
  4.  
     
  5.  
     
  6.  
    }

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

学新通

扩展: 推荐不要用过高的swagger版本,会出现兼容性问题,如果这里出现空指针问题可以把Springboot版本降到2.5.5或者在yaml里面添加配置

  1.  
    spring:
  2.  
    mvc:
  3.  
    pathmatch:
  4.  
    matching-strategy: ant_path_matcher

3.Swagger配置

基本配置

  1.  
    import org.springframework.context.annotation.Bean;
  2.  
    import org.springframework.context.annotation.Configuration;
  3.  
    import springfox.documentation.builders.ApiInfoBuilder;
  4.  
    import springfox.documentation.builders.PathSelectors;
  5.  
    import springfox.documentation.builders.RequestHandlerSelectors;
  6.  
    import springfox.documentation.service.ApiInfo;
  7.  
    import springfox.documentation.spi.DocumentationType;
  8.  
    import springfox.documentation.spring.web.plugins.Docket;
  9.  
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
  10.  
     
  11.  
    import javax.servlet.http.HttpServletRequest;
  12.  
    import javax.servlet.http.HttpServletResponse;
  13.  
    import javax.servlet.http.HttpSession;
  14.  
     
  15.  
    @Configuration
  16.  
    @EnableSwagger2
  17.  
    public class SwaggerConfig {
  18.  
    @Bean //配置docket以配置Swagger具体参数
  19.  
    public Docket productDocket(){
  20.  
    return new Docket(DocumentationType.SWAGGER_2)
  21.  
    .enable(true)//配置是否启用Swagger,如果是false,在浏览器将无法访问
  22.  
    .pathMapping("/")
  23.  
    .select()// 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
  24.  
    //配置需要扫描的包
  25.  
    .apis(RequestHandlerSelectors.basePackage("com.wjc.controller"))
  26.  
    //配置扫描的路径,我设置为所有的路径
  27.  
    .paths(PathSelectors.any())
  28.  
    .build()
  29.  
    .ignoredParameterTypes(HttpSession.class,HttpServletRequest.class,HttpServletResponse.class) //忽略参数
  30.  
    .apiInfo(apiInfo()); //关联上apiInfo()
  31.  
    }
  32.  
    public ApiInfo apiInfo(){
  33.  
    return new ApiInfoBuilder()
  34.  
    .title("接口文档") //标题
  35.  
    .description("测试接口文档") //描述
  36.  
    .version("1.0").build();
  37.  
    }
  38.  
     
  39.  
    }
学新通

学新通

4.Swagger分组

要分组开发,就写多个Docket,可以在每个Docket里面扫描不同的包,实现分工

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

学新通

5.Swagger常用注解

实体类注解

@ApiModel(value = "")  //用在类上
@ApiModelProperty("")    //用在属性上
  1.  
    @Data
  2.  
    @AllArgsConstructor
  3.  
    @NoArgsConstructor
  4.  
    @ApiModel(value = "测试实体类")
  5.  
    public class Dept {
  6.  
    @ApiModelProperty("部门id")
  7.  
    private Integer deptno;
  8.  
    @ApiModelProperty("部门姓名")
  9.  
    private String dname;
  10.  
    @ApiModelProperty("部门职责")
  11.  
    private String db_source;
  12.  
    }

改注解修改的是Swagger Models里的注释

学新通

Controller类注解

@Api(tags = "")  //类注释

 @ApiOperation(value = "")   //方法注释

  1.  
    @RestController
  2.  
    @Api(tags = "部门控制类")
  3.  
    public class DeptController {
  4.  
    @Resource
  5.  
    private DeptMapper deptMapper;
  6.  
     
  7.  
     
  8.  
    @ApiOperation(value = "查询全部")
  9.  
    @GetMapping("/queryDeptList")
  10.  
    public List<Dept> queryDeptList(){
  11.  
    List<Dept> depts = deptMapper.queryDeptList();
  12.  
    for (Dept dept : depts) {
  13.  
    System.out.println(dept);
  14.  
    }
  15.  
    return depts;
  16.  
    }
  17.  
     
  18.  
    }
学新通

学新通

扩展:如果觉得它原生的页面不好看的话,可以换皮肤哦

导入包

  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>

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

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhacjkf
系列文章
更多 icon
同类精品
更多 icon
继续加载