👨🎓作者:Java 学术趴
🏦仓库:Github、Gitee
✏️博客:CSDN、掘金、InfoQ、云+社区
💌公众号:Java 学术趴
🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。
🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号 Java 学术趴联系小编。
☠️每日毒鸡汤:这个社会是存在不公平的,不要抱怨,因为没有用!人总是在反省中进步的!
👋大家好!我是你们的老朋友 Java 学术趴。今天给大家分享一波自动生成 API 文档的工具,就是 Swagger,人们亲切的叫他丝袜哥。哈哈哈哈,开玩笑的啦,小编给大家提供了一个工具类,这个工具类可以直接复制粘贴进行使用哦
1. Swagger3 简介
Swagger(丝袜哥)是一个简单但功能强大的 API 表达工具。它具有地球上最大的 API 工具生态系统,数以千万的开发人员使用,几乎所有的现代编程语言,都支持和使用 Swagger。使用 Swagger 生成 API,我们可以得到交互式文档,自动生成代码的 SDK 以及 API 发新特性。
前后端分离项目,接口文档的存在是十分重要的。与手动编写的接口不同,swagger 是一个自动生成接口文档的工具,在需求不断变更的环境下,手动编写文档的效率太低。与 swagger2 相比新版的 swagger3 配置更少,使用更方便。
2. Swagger 的作用
将项目中所有的接口展现在页面上,这样后端程序员就不需要专门为前端使用者编写专门的接口文档。
当接口更新之后,只需要修改代码中的 Swagger 描述就可以实现实时生成新的接口文档,从而规避了接口文档老旧不能使用的问题
通过 Swagger 页面,我们可以直接进行接口调用,降低了项目开发阶段的调式成本。
3. Swagger 的实际开发配置文件(直接复制粘贴使用即可)
Swagger3 配置类文件:Swagger3Config
package cn.gyyx.config;
import io.swagger.annotations.ApiOperation;
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
/**
* @description:
* @author: Pengdehua
* @time: 2021/8/10 14:06
*/
@Configuration
public class Swagger3Config {
/**
* 配置Swagger3。这些信息都会显示在这个Swagger3的前端页面上
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.OAS_30) // 指定Swagger版本为3
// 该Swagger3的信息,调用的是下边定义的信息方法
.apiInfo(apiInfo())
// 指定负责该 Swagger3 的小组。每个小组都需要有自己的 createRestApi() 以及 apiInfo(),所以说当有多个组是会有很多套
.groupName("Java一组")
// 开发环境用到Swagger,正式环境一般进行关闭 true/false(开关)
// .enable(false)
// 接下来是过滤(指定哪些方法需要存在接口文档信息):过滤之前必须给定 .select()
.select()
// 根据带有注解的方法过滤。存在@ApiOperation注解的方法保存接口描述信息。参数是一个类名,这里使用类自带的class属性获取类名
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
// 根据路径信息过滤。any()代表所有的路径都保存接口信息。还可以使用 PathSelectors.ant("路径信息") 指定特定的接口
.paths(PathSelectors.any())
// 过滤之后最后必须存在一个 build(),表示构建完成
.build();
}
/**
* 如果不配置会使用源码中默认的,一般我们都在这里进行覆盖重写
* 配置该Swagger3的Api信息
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
// 该Swagger3的Api文档题目
.title("第四版监控")
// 该Swagger3的Api文档描述
.description("第四版监控 - 接口管理")
// 该Swagger3的Api文档联系方式(固定格式)
.contact(new Contact("彭德华", "", "pengdehua@gyyx.cn"))
// Swagger3的版本
.version("1.0")
// 最后需要使用build结尾,代表构建完成
.build();
}
}
复制代码
评论