一、Swagger2简介

1、Swagger2优点

整合到Spring Boot中,构建强大RESTful API文档。省去接口文档管理工作,修改代码,自动更新,Swagger2也提供了强大的页面测试功能来调试RESTful API。

2、Swagger2常用注解

Api:修饰整个类,描述Controller的作用
ApiOperation:描述一个类的一个方法,或者说一个接口
ApiParam:单个参数描述
ApiModel:用对象来接收参数
ApiProperty:用对象接收参数时,描述对象的一个字段
ApiResponse:HTTP响应其中1个描述
ApiResponses:HTTP响应整体描述
ApiIgnore:使用该注解忽略这个API
ApiError :发生错误返回的信息
ApiImplicitParam:一个请求参数
ApiImplicitParams:多个请求参数

二、与SpringBoot2.0 整合

1、核心依赖

spring-boot:2.1.3.RELEASE
swagger:2.6.1

2、Swagger2 配置

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
/*** Swagger 配置文件*/
@Configuration
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.swagger.two")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("SpringBoot利用Swagger构建API文档").description("使用RestFul风格, 创建人:知了一笑").termsOfServiceUrl("https://github.com/cicadasmile").version("version 1.0").build();}
}

3、启动类添加注解

@EnableSwagger2
@SpringBootApplication
public class SwaggerApplication {public static void main(String[] args) {SpringApplication.run(SwaggerApplication.class,args) ;}
}

4、启动效果图

三、增删改查案例

1、添加用户

(1)、代码块

@ApiOperation(value="添加用户", notes="创建新用户")
@ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public ResponseEntity<JsonResult> addUser (@RequestBody User user){JsonResult result = new JsonResult();try {users.put(user.getId(), user);result.setResult(user.getId());result.setStatus("ok");} catch (Exception e) {result.setResult("服务异常");result.setStatus("500");e.printStackTrace();}return ResponseEntity.ok(result);
}

(2)、效果图

2、用户列表

(1)、代码块

@ApiOperation(value="用户列表", notes="查询用户列表")
@RequestMapping(value = "/getUserList", method = RequestMethod.GET)
public ResponseEntity<JsonResult> getUserList (){JsonResult result = new JsonResult();try {List<User> userList = new ArrayList<>(users.values());result.setResult(userList);result.setStatus("200");} catch (Exception e) {result.setResult("服务异常");result.setStatus("500");e.printStackTrace();}return ResponseEntity.ok(result);
}

(2)、效果图

3、用户查询

(1)、代码块

@ApiOperation(value="用户查询", notes="根据ID查询用户")
@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Integer", paramType = "path")
@RequestMapping(value = "/getUserById/{id}", method = RequestMethod.GET)
public ResponseEntity<JsonResult> getUserById (@PathVariable(value = "id") Integer id){JsonResult result = new JsonResult();try {User user = users.get(id);result.setResult(user);result.setStatus("200");} catch (Exception e) {result.setResult("服务异常");result.setStatus("500");e.printStackTrace();}return ResponseEntity.ok(result);
}

(2)、效果图

4、更新用户

(1)、代码块

@ApiOperation(value="更新用户", notes="根据Id更新用户信息")
@ApiImplicitParams({@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long",paramType = "path"),@ApiImplicitParam(name = "user", value = "用户对象user", required = true, dataType = "User")
})
@RequestMapping(value = "/updateById/{id}", method = RequestMethod.PUT)
public ResponseEntity<JsonResult> updateById (@PathVariable("id") Integer id, @RequestBody User user){JsonResult result = new JsonResult();try {User user1 = users.get(id);user1.setUsername(user.getUsername());user1.setAge(user.getAge());users.put(id, user1);result.setResult(user1);result.setStatus("ok");} catch (Exception e) {result.setResult("服务异常");result.setStatus("500");e.printStackTrace();}return ResponseEntity.ok(result);
}

(2)、效果图

5、删除用户

(1)、代码块

@ApiOperation(value="删除用户", notes="根据id删除指定用户")
@ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path")
@RequestMapping(value = "/deleteById/{id}", method = RequestMethod.DELETE)
public ResponseEntity<JsonResult> deleteById (@PathVariable(value = "id") Integer id){JsonResult result = new JsonResult();try {users.remove(id);result.setResult(id);result.setStatus("ok");} catch (Exception e) {result.setResult("服务异常");result.setStatus("500");e.printStackTrace();}return ResponseEntity.ok(result);
}

(2)、效果图

四、源代码

GitHub:知了一笑
https://github.com/cicadasmile/middle-ware-parent

SpringBoot2.0 整合 Swagger2 ,构建接口管理界面相关推荐

  1. SpringBoot2.x整合Swagger2 实现API文档实时生成

    我们提供Restful接口的时候,API文档是尤为的重要,它承载着对接口的定义,描述等,本文主要介绍了SpringBoot集成Swagger2生成接口文档的方法示例,需要的朋友们下面随着小编来一起学习 ...

  2. SpringBoot2.0 整合 FastDFS 中间件,实现文件分布式管理

    一.FastDFS简介 1.FastDFS作用 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件上传.文件下载等,解决了大容量存储和负载均衡的问题. ...

  3. SpringBoot2.0 整合 QuartJob ,实现定时器实时管理

    一.QuartJob简介 1.一句话描述 Quartz是一个完全由java编写的开源作业调度框架,形式简易,功能强大. 2.核心API (1).Scheduler 代表一个 Quartz 的独立运行容 ...

  4. SpringBoot2.0 整合 Dubbo框架 ,实现RPC服务远程调用

    一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层 ...

  5. SpringBoot2.0 整合 Redis集群 ,实现消息队列场景

    本文源码 GitHub地址:知了一笑 https://github.com/cicadasmile/middle-ware-parent 一.Redis集群简介 1.RedisCluster概念 Re ...

  6. SpringBoot2.0整合多数据源拆分

    前言 本文环境承接springboot2.0整合使用mybatis(数据访问篇) 一.什么是多数据源 公司分为两个数据库,一个数据库专门存放共同配置文件,一个数据库垂直业务数据库.垂直根据业务划分具体 ...

  7. SpringBoot2.0整合SpringCache和Redis(lettuce)攻略

    Redis Redis 是一个高性能的key-value数据库,广泛应用于互联网业务的缓存,如token池,商品缓存等等热点数据的缓存. linux原版官方地址 http://redis.io win ...

  8. SpringBoot2.0 整合 JWT 框架,解决Token跨域验证问题

    SpringBoot2.0 整合 JWT 框架,解决Token跨域验证问题 参考文章: (1)SpringBoot2.0 整合 JWT 框架,解决Token跨域验证问题 (2)https://www. ...

  9. SpringCloud、SpringBoot2.0 整合Oauth2 (四) 配置文件快速配置url过滤

    SpringBoot2.0 整合Oauth2 (四) 配置文件快速配置url过滤 文章目录 SpringBoot2.0 整合Oauth2 (四) 配置文件快速配置url过滤 1.添加url过滤配置 2 ...

最新文章

  1. 一 Struts2 开发流程
  2. 暑期训练狂刷系列——Foj 1894 志愿者选拔 (单调队列)
  3. mybatis、ibatis 和spring集成
  4. 视频 | 为何我对小鹏NGP“半信半疑”
  5. (二)MySQL调优之-EXPLAIN关键字
  6. 车位编号lisp_CAD自动编号操作
  7. pwm脉宽调制c语言程序,MCS-51系列单片机C语言编程PWM脉宽调制器程序模板
  8. mac brew安装/卸载
  9. java随机数生成字母_java生成随机数字和字母组合
  10. 凸优化之共轭函数(一)
  11. 传统企业互联网转型升级
  12. String,StringBuffer,StringBuffer的区别
  13. 如何进行第一次单片机烧录
  14. XML之文档类型定义和合法性(转)
  15. python中的truncate()神坑
  16. YAD2K: Yet Another Darknet 2 Keras
  17. 电磁兼容原理与抗干扰技术简述
  18. ImageIO.framework
  19. 鲁大师2021上半年手机流畅榜:OPPO Find X3 Pro夺冠!
  20. win10怎样锁定计算机,win10

热门文章

  1. Linux下C程序进程地址空间布局
  2. 蓝桥杯-算法提高-打水问题
  3. poj2393 其它贪心 挑战程序设计竞赛
  4. USACO-Section2.2 Party Lamps
  5. 算术移位的规则及逻辑移动的规则
  6. 我是这样理解HTTP和HTTPS区别的
  7. Ubuntu下apt-get命令详解(转)
  8. Python PEP8 编码规范中文版
  9. JavaWeb项目架构之NFS文件服务器
  10. 我经常访问的技术网站