「快学springboot」16.让swagger帮忙写接口文档
swagger简介
官方的介绍
THE WORLD'S MOST POPULAR API TOOLING
Swagger is the world’s largest framework of API developer tools for the OpenAPI Specification(OAS),
enabling development across the entire API lifecycle, from design and documentation, to test and deployment.
这段话首先告诉大家Swagger是世界上最流行的API工具,并且Swagger的目的是支撑整个API生命周期的开发,包括设计、文档以及测试和部署。使用swagger,可以节省写接口文档的时间,同时也方便对接口进行测试。下面讲解在springboot如何整合swagger。
引入依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
配置
新建Swagger2Config.class
/**
* @author Happy
*/
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createAdminApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("api")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("cn.happyjava.springboot"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("系统接口")
.description("测试系统接口")
.version("1.0")
.build();
}
}
这里配置了swagger的基本信息,可以根据具体需要,自定义修改。
效果
把以上两个步骤做完之后,已经可以看到swagger的效果了。打开http://127.0.0.1:8080/swagger-ui.html,效果如下:
这些都是之前写的一些接口
使用swagger调试接口
现在有以下三个类ResultVO.class,SwaggerTestController.class,TestParam.class如下:
@Data
public class ResultVO {
private String result;
private String message;
}
@RestController
@RequestMapping(value = "/api/swagger")
public class SwaggerTestController {
@PostMapping
public ResultVO test(TestParam param) {
return new ResultVO();
}
}
@Data
public class TestParam {
private String username;
}
重启应用,查看效果:
可以看到,接口的请求参数和响应参数,都自动的在swagger文档上列出来了。
点击Try it out,会弹出输入框,我们可以在此输入测试的参数,如下:
输完参数后,点击执行:
这里可以获得响应的结果。
字段描述
虽然这里swagger已经自动帮我们构建了接口文档了,但是却缺少字段的描述,会让前后端合作其实不是那么舒畅。swagger是可以通过注解的形式,为字段添加描述属性的。
实体参数描述
当使用@RequestBody的形式来接口参数时,可以使用ApiModel来标识类,使用ApiModelProperty来标识属性。修改TestParam.class如下:
@Data
@ApiModel(value = "测试参数")
public class TestParam {
@ApiModelProperty(value = "用户名", required = true)
private String username;
}
重启应用,查看效果:
点击Model,可以查看到字段的描述。
字段参数描述
如果我们采用queryString的形式来接受参数,又或者是get请求,这时候@ApiParam注解来描述字段。修改SwaggerTestController,添加如下方法:
@GetMapping
public ResultVO get(@ApiParam(value = "请求id") String requestId) {
return new ResultVO();
}
重启应用查看效果:
响应参数描述
我们也需要对响应的字段进行描述,其实跟实体参数描述里的用法是一致的。修改ResultVO.class如下:
@Data
@ApiModel(value = "响应")
public class ResultVO {
@ApiModelProperty(value = "这是结果")
private String result;
@ApiModelProperty(value = "这是信息")
private String message;
}
重启应用查看效果:
总结
这里讲解了springboot继承swagger,以及使用swagger的注解来描述参数和响应的字段。swagger在描述字段的时候,还有很丰富的用法,具体的api读者可以在需要时查看api文档即可。
「快学springboot」16.让swagger帮忙写接口文档的更多相关文章
- 「快学springboot」集成Spring Security实现鉴权功能
Spring Security介绍 Spring Security是Spring全家桶中的处理身份和权限问题的一员.Spring Security可以根据使用者的需要定制相关的角色身份和身份所具有的权 ...
- 「快学SpringBoot」配置文件的加载顺序和配置项默认值设置
前言 有的时候,配置信息是我们无法在开发过程中就能确定的.比如,给客户开发的项目,客户需要根据自身的情况自定义配置,如数据库配置,加密密钥配置等等.这时候,就需要把配置文件放在外面,让用户自定义配置部 ...
- 「快学springboot」SpringBoot整合freeMark模板引擎
前言 虽然现在流行前后端分离开发和部署,但是有时候还是需要用到服务端渲染页面的.比如:需要考虑到SEO优化等问题的时候,FreeMark其实还是很有作用的.本人的博客本来是用React开发的,但是后来 ...
- 「快学springboot」SpringBoot多环境配置文件
前言 我们都知道springboot的配置卸载application.properties配置文件上(或者application.yml).但是,如果想要把不同的环境(如开发环境,测试环境,生产环境) ...
- spring boot使用swagger生成api接口文档
前言 在之前的文章中,使用mybatis-plus生成了对应的包,在此基础上,我们针对项目的api接口,添加swagger配置和注解,生成swagger接口文档 具体可以查看本站spring boot ...
- Asp.Net Core 轻松学系列-5利用 Swagger 自动生成接口文档
目录 前言 结语 源码下载 前言 目前市场上主流的开发模式,几乎清一色的前后端分离方式,作为服务端开发人员,我们有义务提供给各个客户端良好的开发文档,以方便对接,减少沟通时间,提高开发效率:对 ...
- 从零开始的SpringBoot项目 ( 五 ) 整合 Swagger 实现在线API文档的功能
综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...
- Asp.Net Core 轻松学-利用 Swagger 自动生成接口文档
前言 目前市场上主流的开发模式,几乎清一色的前后端分离方式,作为服务端开发人员,我们有义务提供给各个客户端良好的开发文档,以方便对接,减少沟通时间,提高开发效率:对于开发人员来说,编写接口文档 ...
- SpringBoot整合Swagger2,再也不用维护接口文档了!
前后端分离后,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理想的状态,实际开发中却很 ...
随机推荐
- netty(五) channel
问题 channel 是如何处理发送一半中断后继续重发的 channel 具体作用是什么 概述 这一节我们将介绍 Channel 和内部接口 Unsafe .其中Unsafe 是内部接口,聚合在Cha ...
- 黑帽JS跳转
一.常规的JS页面跳转代码 .在原来的窗体中直接跳转用 <script type=”text/javascript”> window.location.href=”http://www.g ...
- Pycharm 分屏
有图由真相 效果自在眼前
- pywinauto教程
转:pywinauto教程https://blog.csdn.net/weixin_40161673/article/details/83246861 ** 一.环境安装**1.命令行安装方法pip ...
- JAVA 通过POI 模版,导出excel
如有不足,欢迎指正,谢谢 ! 1.Maven引入 POI jar包.模版和结果文件.rar下载 <dependency> <groupId>org.apache.poi< ...
- 三年以上php开发经验常见面试题
01 一般有三年以上php开发经验去百度.腾讯面试,常会接触的面试题小总结一下: 02 0.简单做一下自我介绍,? 然后谈一下近三年来你的得意之作? 03 1.面试官看过你的简历,会问一些你做的项目 ...
- 解决 Anaconda 3.7更新出现CondaHTTPError与SSLError
1.问题描述: An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, ...
- 「JSOI2014」电信网络
「JSOI2014」电信网络 传送门 一个点选了就必须选若干个点,最大化点权之和,显然最大权闭合子图问题. 一个点向它范围内所有点连边,直接跑最大权闭合子图即可. 参考代码: #include < ...
- 2019年mybatils面试高频题(java)
前前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季. 那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情. 当然,不论 ...
- preg_replace相关问题
preg_replace preg_replace 函数执行一个正则表达式的搜索和替换. 语法: preg_replace ( mixed $pattern , mixed $replacement ...