Spring Boot 3项目集成Swagger3教程
🌟 前言
欢迎来到我的小天地,这里是我记录技术点滴、分享学习心得的地方。📚
🛠️ 技能清单
- 编程语言:Java、C、C++、Python、Go、
- 前端技术:Jquery、Vue.js、React、uni-app、Echarts
- UI设计: Element-ui、Antd、Color-ui
- 后端技术:Spring Boot、Mybatis-plus、Swagger
- 移动开发:Android
- 操作系统:Windows、Linux
- 开发框架:RuoYi、微信小程序
- 开发工具:VSCode、IDEA、Eclipse、WebStorm、HbuildX、Navicat、Xshell、Android Studio、Postman
- 数据库技术:MySQL、Redis、SQL Server
- 版本控制:Git
Swagger是一个用于设计、构建、记录和使用RESTful web服务的开源软件框架。Swagger 3(OpenAPI 3.0)提供了更加强大和灵活的API文档生成能力。本教程将指导您如何在Spring Boot 3项目中集成Swagger3,并使用Knife4j作为UI界面。
1. 添加依赖
首先,您需要在项目的
pom.xml
文件中添加Swagger3的依赖。同时,为了确保依赖能够正确下载,您可以添加阿里云的Maven镜像仓库。
<!--swagger3--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.1.0</version></dependency><repositories><!--阿里云镜像--><repository><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories>
2. 配置Swagger
在Spring Boot项目中创建一个配置类
SwaggerConfig
,并添加Swagger的配置信息。
importio.swagger.v3.oas.models.ExternalDocumentation;importio.swagger.v3.oas.models.OpenAPI;importio.swagger.v3.oas.models.info.Contact;importio.swagger.v3.oas.models.info.Info;importio.swagger.v3.oas.models.info.License;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassSwaggerConfig{@BeanpublicOpenAPIspringShopOpenAPI(){returnnewOpenAPI().info(newInfo().title("标题").contact(newContact()).description("我的API文档").version("v1").license(newLicense().name("Apache 2.0").url("http://springdoc.org"))).externalDocs(newExternalDocumentation().description("外部文档").url("https://springshop.wiki.github.org/docs"));}}
3. 实体类和控制层注解
在您的实体类和控制层中使用Swagger注解来描述API。
// 实体类注解示例importcom.alibaba.excel.annotation.ExcelProperty;importcom.alibaba.excel.annotation.write.style.ColumnWidth;importio.swagger.v3.oas.annotations.media.Schema;importlombok.AllArgsConstructor;importlombok.Builder;importlombok.Data;importlombok.NoArgsConstructor;importlombok.experimental.Accessors;importjava.util.Date;@Data@Builder@NoArgsConstructor@AllArgsConstructor@Accessors(chain =true)@Schema(name ="Employee", description ="$!{table.comment}")publicclassEmp{@ExcelProperty("ID")@Schema(description ="ID")privateint id;@ExcelProperty("用户名")@Schema(description ="用户名")privateString names;@ExcelProperty("工资")@Schema(description ="工资")privatedouble salary;@ExcelProperty("生日")@Schema(description ="生日")privateDate birthday;@ColumnWidth(20)@ExcelProperty("头像")@Schema(description ="头像")privateString photo;// @ColumnWidth(20)// @DateTimeFormat("yyyy-MM-dd HH:mm:ss")// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")// @ExcelProperty("创建日期")// private Date u_create_time;}// 控制层注解示例importio.swagger.v3.oas.annotations.Operation;@Operation(summary ="获取所有员工信息")@GetMapping("/selectAll")publicList<Emp>selectAll(){// ...}
4. 通用返回结果封装
创建一个通用的返回结果类,用于统一API的响应格式。
importio.swagger.v3.oas.annotations.media.Schema;importlombok.AllArgsConstructor;importlombok.Builder;importlombok.Getter;importlombok.Setter;importlombok.extern.slf4j.Slf4j;@Builder(toBuilder =true)@AllArgsConstructor@Setter@Getter@Slf4jpublicclassResult<T>{/**
* 提示信息
*/@Schema(description ="提示信息")privateString message;/**
* 是否成功
*/@Schema(description ="是否成功")privateboolean success;/**
* 返回状态码
*/@Schema(description ="返回状态码")privateInteger code;/**
* 数据
*/@Schema(description ="数据")privateT data;publicResult(){}publicstaticResultsuccess(){ResultResult=newResult();Result.setSuccess(Boolean.TRUE);Result.setCode(ResultCode.SUCCESS.getCode());Result.setMessage(ResultCode.SUCCESS.getMsg());returnResult;}publicstaticResultsuccess(String msg){ResultResult=newResult();Result.setMessage(msg);Result.setSuccess(Boolean.TRUE);Result.setCode(ResultCode.SUCCESS.getCode());returnResult;}publicstaticResultsuccess(Object data){ResultResult=newResult();Result.setData(data);Result.setSuccess(Boolean.TRUE);Result.setCode(ResultCode.SUCCESS.getCode());Result.setMessage(ResultCode.SUCCESS.getMsg());returnResult;}/**
* 返回失败 消息
*
* @return Result
*/publicstaticResultfailure(){ResultResult=newResult();Result.setSuccess(Boolean.FALSE);Result.setCode(ResultCode.FAILURE.getCode());Result.setMessage(ResultCode.FAILURE.getMsg());returnResult;}/**
* 返回失败 消息
*
* @param msg 失败信息
* @return Result
*/publicstaticResultfailure(String msg){ResultResult=newResult();Result.setSuccess(Boolean.FALSE);Result.setCode(ResultCode.FAILURE.getCode());Result.setMessage(msg);returnResult;}publicstaticResultfailure(Integer code,String msg){ResultResult=newResult();Result.setSuccess(Boolean.FALSE);Result.setCode(code);Result.setMessage(msg);returnResult;}publicstaticResultfailure(String msg,ResultCode exceptionCode){ResultResult=newResult();Result.setMessage(msg);Result.setSuccess(Boolean.FALSE);Result.setCode(exceptionCode.getCode());Result.setData(exceptionCode.getMsg());returnResult;}/**
* 返回失败 消息
*
* @param exceptionCode 错误信息枚举
* @return Result
*/publicstaticResultfailure(ResultCode exceptionCode){ResultResult=newResult();Result.setSuccess(Boolean.FALSE);Result.setCode(exceptionCode.getCode());Result.setMessage(exceptionCode.getMsg());returnResult;}/**
* 返回失败 消息
*
* @param exceptionCode 错误信息枚举
* @param msg 自定义错误提示信息
* @return Result
*/publicstaticResultfailure(ResultCode exceptionCode,String msg){ResultResult=newResult();Result.setMessage(msg);Result.setSuccess(Boolean.FALSE);Result.setCode(exceptionCode.getCode());returnResult;}}
5. 注解说明
Swagger3的注解与Swagger2有所不同,以下是一些常用注解的对照表:
Swagger2注解Swagger3注解注解位置@Api@Tag(name = “接口类描述”)Controller类上@ApiOperation@Operation(summary = “接口方法描述”)Controller方法上@ApiImplicitParams@ParametersController方法上@ApiImplicitParam@Parameter(description = “参数描述”)Controller方法上@ApiParam@Parameter(description = “参数描述”)方法参数上@ApiIgnore@Parameter(hidden = true) 或 @Operation(hidden = true)-@ApiModel@SchemaDTO类上@ApiModelProperty@SchemaDTO属性上
6. 访问Swagger UI
启动您的Spring Boot应用后,您可以通过以下地址访问Swagger UI:
http://localhost:8080/doc.html
http://localhost:8080/swagger-ui/index.html
在这里,您可以查看API文档,测试API接口,并获取相关信息。
🚀 获取源代码
- 后端案例:https://gitee.com/bestwishes0203/Front-end-example
- 前端案例:https://gitee.com/bestwishes0203/Back-end-example
📌 联系方式
如果您对我们的项目感兴趣,或者有任何技术问题想要探讨,欢迎通过以下方式与我联系。我非常期待与您交流,共同学习,共同进步!
- 邮箱:2109664977@qq.com
- Gitee:https://gitee.com/bestwishes0203
- GitHub:https://github.com/bestwishes0203
- CSDN:https://blog.csdn.net/interest_ing_/
- 个人博客:访问我的博客
🎉 结语
感谢你的访问,如果你对我的技术文章或项目感兴趣,欢迎通过以上方式与我联系。让我们一起在技术的道路上不断前行!🚀
版权归原作者 洛可可白 所有, 如有侵权,请联系我们删除。