使用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. Java NIO系列之[说在前面的话]

    在开始这个系列文章之前,先聊一些题外话,说说我为什么要写Java NIO这个系列技术文章(不看完会错失一个亿的),因为Java NIO并不像JVM,中间件源码那么有吸引力,但这个技术点是java的基础 ...

  2. SpringBoot 2 快速整合 | 统一异常处理

    统一异常处理相关注解介绍 @ControllerAdvice 声明在类上用于指定该类为控制增强器类,如果想声明返回的结果为 RESTFull 风格的数据,需要在声明 @ExceptionHandler ...

  3. Python 基础(二)

    输入一个字符串,以列表输出大写,如果包含整数,转为整型 str = input() list = [] for i in str: if i.isdecimal() == True: list.app ...

  4. JIRA中的核心概念

    转载自:http://blog.csdn.net/zhengxy2011/article/details/6940380 1.1.1   问题 JIRA跟踪问题(Issue),这些问题可以是bug,功 ...

  5. [python]python列表、元组

    1. 列表和元组简介 列表:用中括号[]包裹,元素的个数及元素的值可以改变. 元组:用小括号()包裹,不可用更改. 通过切片运算[]和[:]可以得到子集. 2.列表 示例: List = [1, 2, ...

  6. HDU - 3416-Marriage Match IV (最大流 + 最短路)

    HDU - 3416:http://acm.hdu.edu.cn/showproblem.php?pid=3416 参考:https://www.cnblogs.com/kuangbin/archiv ...

  7. Minimum spanning tree for each edge(倍增LCA)

    https://vjudge.net/contest/320992#problem/J 暑期训练的题. 题意:给你一个n个点,m条边的无向图.对于每一条边,求包括该边的最小生成树. 思路:首先想到求一 ...

  8. SpringBoot发送邮箱验证码

    一.开启QQ邮箱服务 (1)登陆QQ找到设置,点击账户 (2)往下拉,开启POP3/SMTP服务和IMAP/SMTP服务 当开启IMAP/SMTP会有一串密文密码,保存起来后面要用到 二.spring ...

  9. springmvc全局异常后返回JSON异常数据

    转自:http://www.cnblogs.com/exmyth/p/5601288.html (1)自定义或者使用spring自带的各种异常处理器 例如spring基于注解的异常解析器Annotat ...

  10. ORACLE官网JAVA学习文档

    Trails Covering the Basics   1 Getting Started 1.1 The Java Technology Phenomenon 1.1.1 About the Ja ...