前言

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的更多相关文章

  1. windows下elasticsearch配置及spring boot 简单demod的 整合

    学习过程: elasticsearch 下载安装 elasticsearch-head 安装 spring boot 下elasticsearch的配置 使用ElasticsearchReposito ...

  2. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  3. spring boot与jdbcTemplate的整合案例2

    简单入门了spring boot后,接下来写写跟数据库打交道的案例.博文采用spring的jdbcTemplate工具类与数据库打交道. 下面是搭建的springbootJDBC的项目的总体架构图: ...

  4. 玩转spring boot——简单登录认证

    前言 在一个web项目中,某些页面是可以匿名访问的,但有些页面则不能.spring mvc提供了HandlerInterceptor接口来应对,只需要重写preHandle方法便可以实现此功能.那么使 ...

  5. Spring Boot 中使用 MyBatis 整合 Druid 多数据源

    2017 年 10 月 20 日   Spring Boot 中使用 MyBatis 整合 Druid 多数据源 本文将讲述 spring boot + mybatis + druid 多数据源配置方 ...

  6. Spring Boot数据访问之整合Mybatis

    在Mybatis整合Spring - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中谈到了Spring和Mybatis整合需要整合的点在哪些方面,需要将Mybatis中数据库连接池等相关对 ...

  7. Spring Boot2 系列教程(二十)Spring Boot 整合JdbcTemplate 多数据源

    多数据源配置也算是一个常见的开发需求,Spring 和 SpringBoot 中,对此都有相应的解决方案,不过一般来说,如果有多数据源的需求,我还是建议首选分布式数据库中间件 MyCat 去解决相关问 ...

  8. RabbitMQ(三):RabbitMQ与Spring Boot简单整合

    RabbitMQ是目前非常热门的一款消息中间件,不管是互联网大厂还是中小企业都在大量使用.Spring Boot的兴起,极大地简化了Spring的开发,本文将使用Spring Boot与RabbitM ...

  9. Spring Boot2 系列教程(十)Spring Boot 整合 Freemarker

    今天来聊聊 Spring Boot 整合 Freemarker. Freemarker 简介 这是一个相当老牌的开源的免费的模版引擎.通过 Freemarker 模版,我们可以将数据渲染成 HTML ...

随机推荐

  1. MIT线性代数:17.正交矩阵和Cram-Schmidt正交化

  2. CSP-S:追忆

    Warning:这一篇极其中二,开了那个大会莫名有感而发. 模拟测试17那套题啊... 开的这个大会为什么弄得我退役感如此强烈... 早就想收藏了,还是记下来吧 <入阵曲> 丹青千秋酿, ...

  3. visit:组合数学,ex_Lucas

    没做过ex_Lucas的同学可以先看看这个:组合数学专题<礼物>题解.顺便把那道题水了. 有一个公式蛮重要的,竟然还有人不知道? 有一共n种共k个物品,每一种有a1,a2,a3...an个 ...

  4. 「分治」-cdq分治

    cdq分治是一种分治算法: 一种分治思想,必须离线,可以用来处理序列上的问题(比如偏序问题),还可以优化1D/1D类型的DP.• 算法的大体思路我们可以用点对来描述.假定我们有一个长度为n的序列,要处 ...

  5. L1与L2正则化的对比及多角度阐述为什么正则化可以解决过拟合问题

    正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束.调整或缩小.也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险. 一. ...

  6. Linux 常用命令 | free 详解

    free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free命令是最经常使用的命令之一.本文介绍free命令的使用方法和 ...

  7. 使用 element-ui 级联插件遇到的坑

    需求描述[省市区三级联动] 组件:Cascader 级联选择器 后端需要所选中的地区的名字,如:['北京市', '北京市', '东城区'] 获取后端省市区具体列表的接口返回数据: // 省 - 参数1 ...

  8. jquery serialize()函数用法

    jquery serialize()函数用法<pre><html><head><script type="text/javascript" ...

  9. 云服务器linux系统修改时间和时区

    申请的云服务器时间不对,用同步网络时间的命令执行后依然有问题. 解决办法: # tzselect [root@ylyuat2-web02 logs]# TZ='Asia/Shanghai'[root@ ...

  10. Arduino 处理JSON格式的数据

    Arduino 处理JSON格式的数据 1.安装 ArduinoJson这个包 2.程序代码 # include <ArduinoJson.h> #define ALINK_BODY_FO ...