十、Spring boot 简单优雅的整合 Swagger2
前言
swagger2 是什么,我这里就不说了,就是一个简单的接口文档,方便前后端联调。
其实之前没有想要到要使用swagger 的。因为我之前用的是YAPI ,不过这个是一个单独的工具。并且是开源的,整个团队协作使用起来非常方便。但是这里我们坐个人项目的话,就使用比较简单的swagger2了,我们在在springboot中使用swagger2 比较简单。
pom.xml
一切从配置开始的,我们映入swagger2 ,需要先引入依赖。如下:
<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>
SwaggerConfig
引入依赖后,我们就需要来写一个配置,我们在config 目录下创建一个SwaggerConfig类。内容如下:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.quellan.zlflovemm.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("Spring Boot中使用Swagger2构建RESTful APIs")
.description("SpringBoot整合Swagger,详细信息......")
.version("1.0.0")
.build();
}
}
可以看到代码不复杂,就是创建了一个Docket 的bean。唯一需要注意的是注意配置好接口的目录。
其实到了这一步,我们就已经配置好了。我们启动项目测试一下。启动项目后,在浏览器上输入:
http://localhost:9090/zlflovemm/swagger-ui.html
可以看到我们之前写的接口已经在界面上显示出来了。不过现在的接口还惨不忍睹,你们自己实践的时候可以看看,需要我们再做些工作。到这里有些朋友可能会出现问题,发现没有出现这种界面,可能是配置不对,要不就是你们的配置了拦截器。我自己开始弄的时候就出现了页面访问不了的情况。然后发现是我们上篇文章番外中设置的拦截器导致的。我们可以先把注释掉。
接口中的配置
我们就用用户类的接口来写吧,毕竟还是写文档还是很麻烦的。写好后的代码如下:
@Slf4j
@RestController
@RequestMapping("/user")
@Api(tags = "用户管理相关接口")
public class UserController {
@Autowired
private UserService userService;
@ApiOperation("获取用户列表")
@RequestMapping(value = "/list")
public List<UserEntry> findUserList(){
return userService.findUserList();
}
@ApiOperation("新增用户信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "userName",value = "用户名",defaultValue = "zlf"),
@ApiImplicitParam(name="password",value = "密码",defaultValue = "zlf"),
@ApiImplicitParam(name = "email",value = "邮箱",defaultValue = "11@qq.com")
})
@RequestMapping(value = "/add",method = RequestMethod.GET)
public String addUser(@RequestParam(value = "userName")String uaserName,@RequestParam(value = "password")String password,@RequestParam(value = "email")String email){
int falg=userService.addUser(uaserName,password,email);
if(falg>0){
return "success";
}
return "error";
}
@ApiOperation("删除用户信息")
@ApiImplicitParam(name = "id",value = "1",defaultValue = "1")
@RequestMapping(value = "/delete",method = RequestMethod.GET)
public String deleteUser(@RequestParam(value = "id")int id){
if(userService.deleteUser(id)>0){
return "success";
}
return "error";
}
@ApiOperation("获取用户列表2")
@RequestMapping(value = "/list2",method = RequestMethod.GET)
public List<UserEntry> findUserList2(){
return userService.findUserList2();
}
@ApiOperation("新增用户信息2")
@ApiImplicitParams({
@ApiImplicitParam(name = "userName",value = "用户名",defaultValue = "zlf"),
@ApiImplicitParam(name="password",value = "密码",defaultValue = "zlf"),
@ApiImplicitParam(name = "email",value = "邮箱",defaultValue = "11@qq.com")
})
@RequestMapping(value = "/add2",method = RequestMethod.GET)
public String addUser2(@RequestParam(value = "userName")String uaserName,@RequestParam(value = "password")String password,@RequestParam(value = "email")String email){
int falg= userService.addUser2(uaserName,password,email);
if(falg>0){
return "success";
}
return "error";
}
@ApiOperation("删除用户信息2")
@ApiImplicitParam(name = "id",value = "1",defaultValue = "1")
@RequestMapping(value = "/delete2",method = RequestMethod.GET)
public String deleteUser2(@RequestParam(value = "id")int id){
if(userService.deleteUser2(id)>0){
return "success";
}
return "error";
}
}
在类上加入@Api(tags = "用户管理相关接口") 表示这个类的作用。
在单个接口上,我们通过@ApiOperation,@ApiImplicitParams,@ApiImplicitParam来写备注了。
@ApiOperation 用来注明接口的功能。
@ApiImplicitParam 用来设置接口有单个参数的,
@ApiImplicitParams 用来设置接口多个参数的,怎么使用,代码中有样例。
接下来,我们来看下界面上。
可以看到,界面上已经可以显示出来了,这比我们刚刚开始没有配置一些注释要友好了很多,点击 execute 可以调试接口,还是可以满足基本需求的。但是大家也同样发现了,swagger 对我们的代码侵入是非常严重的,我们项目中本来代码就很多,我们还要加上这么多的注解代码,对我们写代码是很不友好的。
番外
到此为止,springboot 配置swagger2 就已经实现好了,整体上比较简单,这些希望对大家有帮助。
好了,就说这么多啦
代码上传到github:
https://github.com/QuellanAn/zlflovemm
后续加油♡
欢迎大家关注个人公众号 "程序员爱酸奶"
分享各种学习资料,包含java,linux,大数据等。资料包含视频文档以及源码,同时分享本人及投递的优质技术博文。
如果大家喜欢记得关注和分享哟❤
十、Spring boot 简单优雅的整合 Swagger2的更多相关文章
- windows下elasticsearch配置及spring boot 简单demod的 整合
学习过程: elasticsearch 下载安装 elasticsearch-head 安装 spring boot 下elasticsearch的配置 使用ElasticsearchReposito ...
- Spring Boot 学习笔记(六) 整合 RESTful 参数传递
Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...
- spring boot与jdbcTemplate的整合案例2
简单入门了spring boot后,接下来写写跟数据库打交道的案例.博文采用spring的jdbcTemplate工具类与数据库打交道. 下面是搭建的springbootJDBC的项目的总体架构图: ...
- 玩转spring boot——简单登录认证
前言 在一个web项目中,某些页面是可以匿名访问的,但有些页面则不能.spring mvc提供了HandlerInterceptor接口来应对,只需要重写preHandle方法便可以实现此功能.那么使 ...
- Spring Boot 中使用 MyBatis 整合 Druid 多数据源
2017 年 10 月 20 日 Spring Boot 中使用 MyBatis 整合 Druid 多数据源 本文将讲述 spring boot + mybatis + druid 多数据源配置方 ...
- Spring Boot数据访问之整合Mybatis
在Mybatis整合Spring - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中谈到了Spring和Mybatis整合需要整合的点在哪些方面,需要将Mybatis中数据库连接池等相关对 ...
- Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源
多数据源配置也算是一个常见的开发需求,Spring 和 SpringBoot 中,对此都有相应的解决方案,不过一般来说,如果有多数据源的需求,我还是建议首选分布式数据库中间件 MyCat 去解决相关问 ...
- RabbitMQ(三):RabbitMQ与Spring Boot简单整合
RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitM ...
- Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker
今天来聊聊 Spring Boot 整合 Freemarker. Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎.通过 Freemarker 模版,我们可以将数据渲染成 HTML ...
随机推荐
- 暑期集训20190725 加法(add)
[题目描述] 数学课,黑板上写着n个数字,记为A1到An,fateice会重复以下操作若干次: 1. 选择两个奇偶性相同的整数Ai和Aj, 将他们擦去 2. 将Ai+Aj写在黑板上 问黑板上最终是否有 ...
- CSPS模拟 62
婚礼现场系列 T1 $gragh$ 为了方便把边的贡献下放到点,跑一个生成树作为划分依据. T2 $permutation$ 由于在本题中,构造的变换方法保证只能邻项交换 所以如果位置串字典序变小,权 ...
- 部署https并自动续期
1.其它步骤参考地址https://blog.csdn.net/achenyuan/article/details/79021340https://blog.csdn.net/Dancen/artic ...
- liunx查看日志 | 最实用命令和方法
1.业务系统访问量不是很大的时候,使用这个,有bug的地方操作下,直接看最后操作的日志 tail -fn100 catalina.log 查询日志尾部最后100行的日志,并且随文件; 2. ...
- re模块的基本使用
目录 re模块 常用元字符 特殊构造 贪婪模式 非贪婪模式 re的常用函数 re模块补充 关于re模块必须知道的知识点 re模块 re模块 , 即正则表达式 , 本身是一种小型的.高度专业化的编程语言 ...
- linux写系统服务的方法
linux写系统服务的方法 2.1 首先编写demo程序:hello.c<pre>#include <stdio.h> # chkconfig: 2345 10 90 main ...
- egret编译速度慢解决方法
egret编译速度慢解决方法 直接用增量更新egret run -a 每次改完代码 保存都会自动编译
- 010.Kubernetes二进制部署kube-controller-manager
一 部署高可用kube-controller-manager 1.1 高可用kube-controller-manager介绍 本实验部署一个三实例 kube-controller-manager 的 ...
- kubespray2.11安装kubernetes1.15
关于kubespray Kubespray是开源的kubernetes部署工具,整合了ansible,可以方便的部署高可用集群环境,官网地址:https://github.com/kubernetes ...
- 手把手教你实现热更新功能,带你了解 Arthas 热更新背后的原理
文章来源:https://studyidea.cn/java-hotswap 一.前言 一天下午正在摸鱼的时候,测试小姐姐走了过来求助,说是需要改动测试环境 mock 应用.但是这个应用一时半会又找不 ...