使用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. Linux 防火墙开放、查询、关闭端口

    1. 开放指定端口 firewall-cmd --zone=public --add-port=5121/tcp --permanent # --permanent 永久生效,如果不加此条,重启后该命 ...

  2. 【linux】【root权限的掌控】

    前言: 喜欢玩linux的都知道root权限是一个很重要的东西.因为linux里面万物皆文件,对于权限的掌控也就达到了一个前所未有的限制(不然随便一个用户rm -rf /*不就全完了,,哈哈). 下面 ...

  3. JavaScript img标签自带的onload和onerror函数

    onload 加载完成时调用触发 原生: <img src="" alt="Park" onload=“handleImageLoaded()”/> ...

  4. 成功项目管理与PMP认证2017

    http://study.163.com/course/courseLearn.htm?courseId=1064005#/learn/video?lessonId=1003778171&co ...

  5. 2019 Multi-University Training Contest 8

    2019 Multi-University Training Contest 8 C. Acesrc and Good Numbers 题意 \(f(d,n)\) 表示 1 到 n 中,d 出现的次数 ...

  6. HDU-4027-Can you answer these queries?线段树+区间根号+剪枝

    传送门Can you answer these queries? 题意:线段树,只是区间修改变成 把每个点的值开根号: 思路:对[X,Y]的值开根号,由于最大为 263.可以观察到最多开根号7次即为1 ...

  7. Atcoder D - XOR Replace(思维)

    题目链接:http://agc016.contest.atcoder.jp/tasks/agc016_d 题解:稍微想一下就知道除了第一次的x是所有的异或值,之后的x都是原先被替换掉的a[i]所以要想 ...

  8. hdu 1503 Advanced Fruits 最长公共子序列 *

    Advanced Fruits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. SVN分支与主干合并

    1.主干合并到分支 1在本地trunk中先update一下,有冲突的解决冲突,保证trunk和repository已经完全同步, 2.在/branches /MyProject上右键,依次选择”Tor ...

  10. Flink文章测试

    Flink文章测试 Flink文章测试 Flink文章测试 Flink文章测试 Flink文章测试 Flink文章测试 Flink文章测试 Flink文章测试 Flink文章测试 Flink文章测试 ...