使用Swagger 可以动态生成Api接口文档,在项目开发过程中可以帮助前端开发同事减少和后端同事的沟通成本,而是直接参照生成的API接口文档进行开发,提高了开发效率。这里以springboot(版本2.1.4.RELEASE)集成swagger2并以简单测试用例延时集成效果。

1、准备工作

pom依赖加入swagger

<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>

配置文件application.properties可以添加swagger.enabled配置控制是否开启

# 控制开启或关闭swagger
swagger.enabled=true

添加swagger配置类,主要用于配置生成api的相关信息

@Configuration
@EnableSwagger2
public class SwaggerConfig { /**
* 控制开启或关闭swagger
*/
@Value("${swagger.enabled}")
private boolean swaggerEnabled; @Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
// api基础信息
.apiInfo(apiInfo())
// 控制开启或关闭swagger
.enable(swaggerEnabled)
// 选择那些路径和api会生成document
.select()
// 扫描展示api的路径包
.apis(RequestHandlerSelectors.basePackage("com.example.springbootswagger.controller"))
// 对所有路径进行监控
.paths(PathSelectors.any())
// 构建
.build();
} /**
* @descripiton:
* @author: kinson
* @date: 2019/9/10 23:33
* @param
* @exception:
* @modifier:
* @return:springfox.documentation.service.ApiInfo
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// api名称
.title("SwaggerUI APIS")
// api 描述
.description("Simple Demo About SwaggerUI APIS")
// api 版本
.version("1.0")
// 构建
.build();
}
}

这里的@EnableSwagger2用于让激活swagger,也可以加载启动类上。

添加测试url

@RestController
@Api(tags = "测试demo")
@RequestMapping(value = "swagger")
public class SwaggerController { @ApiOperation(value = "hello", notes = "hello测试api")
@GetMapping(value = "hello")
public String hello() {
return "hello";
} @ApiOperation(value = "add", notes = "路径变量测试")
@ApiImplicitParam(name = "swaggerId",value = "测试参数id",required = true, dataType = "Integer", paramType="path")
@PostMapping(value = "add/{swaggerId}")
public String add(@PathVariable Integer swaggerId) {
Assert.notNull(swaggerId, "swaggerId为空");
return swaggerId.toString();
} @ApiOperation(value = "update",notes = "多路径参数变量测试")
@ApiImplicitParams({
@ApiImplicitParam(name = "swaggerId",value = "测试参数id",required = true, dataType = "Integer", paramType="path"),
@ApiImplicitParam(name = "name",value = "测试参数名称",required = true, dataType = "String", paramType="path")})
@PutMapping(value = "/update/{swaggerId}/{name}")
public String update(@PathVariable Integer swaggerId,@PathVariable String name) {
return String.valueOf(swaggerId + name);
} @ApiOperation(value = "addUser",notes = "对象添加测试")
@ApiImplicitParam(name = "user",value = "待添加用户信息",required = true, dataType = "User", paramType="body")
@ApiResponse(code = 200, message = "添加成功")
@PostMapping(value = "/addUser")
public String addUser(@RequestBody User user){ return user.getName();
} }

上述工作加完后就可以启动项目查看效果,打开浏览器访问http://127.0.0.1:8080/swagger-ui.html,如下图则表示集成成功

2、swagger 相关注解

  • @Api:用在类上,标志此类是Swagger资源 value:接口说明 tags:接口说明,可以在页面中显示。可以配置多个,当配置多个的时候,在页面中会显示多个接口的信息
  • @ApiOperation:用在方法上,描述方法的作用
  • @ApiImplicitParams:包装器,包含多个ApiImplicitParam对象列表
  • @ApiImplicitParam:定义在@ApiImplicitParams注解中,定义单个参数详细信息,如下:  

    ○ paramType:参数放在哪个地方
      § header-->请求参数的获取:@RequestHeader
      § query-->请求参数的获取:@RequestParam
      § path(用于restful接口)-->请求参数的获取:@PathVariable
      § body(以流的形式提交 仅支持POST)
      § form(以form表单的形式提交 仅支持POST)
    ○ name:参数名
    ○ dataType:参数的数据类型 只作为标志说明,并没有实际验证
      § Long
      § String
    ○ required:参数是否必须传
      § true
      § false
    ○ value:参数的意义
    ○ defaultValue:参数的默认值

  • @ApiModel:描述一个Swagger Model的额外信息
  • @ApiModel用在类上,表示对类进行说明,用于实体类中的参数接收说明
  • @ApiModelProperty:在model类的属性添加属性说明
  • @ApiParam:用于Controller中方法的参数说明
  • @ApiResponses:包装器:包含多个ApiResponse对象列表
  • @ApiResponse:定义在@ApiResponses注解中,一般用于描述一个错误的响应信息 。如下:
    • code:错误码,例如400
    • message:信息,例如"请求参数没填好"
    • response:抛出异常的类
  • @Authorization 声明要在资源或操作上使用的授权方案。
  • @AuthorizationScope 描述OAuth2授权范围

Github源码参照

springboot 集成swagger2的更多相关文章

  1. SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)

    1.pom.xml增加依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>spri ...

  2. springboot集成swagger2构建RESTful API文档

    在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可 ...

  3. SpringBoot集成Swagger2在线文档

    目录 SpringBoot集成Swagger2在线文档 前言 集成SpringBoot 登录接口文档示例 代码 效果 注解说明 总结 SpringBoot集成Swagger2在线文档 前言 不得不说, ...

  4. springboot 集成swagger2.x 后静态资源报404

    package com.bgs360.configuration; import org.springframework.context.EnvironmentAware; import org.sp ...

  5. SpringBoot集成Swagger2并配置多个包路径扫描

    1. 简介   随着现在主流的前后端分离模式开发越来越成熟,接口文档的编写和规范是一件非常重要的事.简单的项目来说,对应的controller在一个包路径下,因此在Swagger配置参数时只需要配置一 ...

  6. springboot集成swagger2报Illegal DefaultValue null for parameter type integer

    springboot集成swagger2,实体类中有int类型,会报" Illegal DefaultValue null for parameter type integer"的 ...

  7. SpringBoot集成Swagger2 以及汉化 快速教程

    (一) Swagger介绍 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件 (二)为什么使用Swagger 在现在的开发过程中还有很大一部分公司都是以口口相传的方式来进行 ...

  8. Springboot集成swagger2生成接口文档

    [转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11509884.html    作者:jstarseven    码字挺辛苦的.....   一 ...

  9. [转] spring-boot集成swagger2

    经测,spring-boot版本使用1.5.2+时需使用springfox-swagger2版本2.5+(spring-boot 1.2 + springfox-swagger2 2.2 在未扫描ja ...

随机推荐

  1. list 分组

    Map<Long, List<LogDataVo>> corpIdMap = list.stream().collect(Collectors.groupingBy(LogDa ...

  2. 刨死你系列——HashMap(jdk1.8)

    本文的源码是基于JDK1.8版本,在学习HashMap之前,先了解数组和链表的知识. 数组:数组具有遍历快,增删慢的特点.数组在堆中是一块连续的存储空间,遍历时数组的首地址是知道的(首地址=首地址+元 ...

  3. ECfinal-D-Ice Cream Tower-二分+贪心

    传送门:https://vjudge.net/problem/Gym-101194D 题意:在一堆数中,找到对多的组合,使得每个组合的个数为K,且满足在排序后,后一个是前一个的两倍: 思路:二分,贪心 ...

  4. 牛客小白月赛6 J 洋灰三角 数学

    链接:https://www.nowcoder.com/acm/contest/136/J来源:牛客网 题目描述     洋灰是一种建筑材料,常用来筑桥搭建高层建筑,又称,水泥.混凝土.     WH ...

  5. lightoj 1145 - Dice (I)(dp+空间优化+前缀和)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1145 题解:首先只要是dp的值只和上一个状态有关系那么就可以优化一维,然后这题 ...

  6. bzoj 2726 任务安排 斜率优化DP

    这个题目中 斜率优化DP相当于存在一个 y = kx + z 然后给定 n 个对点 (x,y)  然后给你一个k, 要求你维护出这个z最小是多少. 那么对于给定的点来说 我们可以维护出一个下凸壳,因为 ...

  7. poj 1456 Supermarket(贪心+优先队列)

    题目链接:http://poj.org/problem?id=1456 题意:有N件商品,分别给出商品的价值和销售的最后期限,只要在最后日期之前销售处,就能得到相应的利润,并且销售该商品需要1天时间. ...

  8. 天梯杯 L2-023 图着色问题

    L2-023. 图着色问题 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 图着色问题是一个著名的NP完全问题.给定无向图 G ...

  9. kick start 2019 round D T3题解

    ---恢复内容开始--- 题目大意:共有N个房子,每个房子都有各自的坐标X[i],占据每个房子需要一定花费C[i].现在需要选择K个房子作为仓库,1个房子作为商店(与题目不同,概念一样),由于仓库到房 ...

  10. 深入浅出理解EdgeBoard中NHWC数据格式

    摘要: 在深度学习中,为了提升数据传输带宽和计算性能,经常会使用NCHW.NHWC和CHWN数据格式,它们代表Image或Feature Map等的逻辑数据格式(可以简单理解为数据在内存中的存放顺序) ...