SpringBoot3集成Swagger3的詳細教程
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項目中創(chuàng)建一個配置類SwaggerConfig
,并添加Swagger的配置信息。
import io.swagger.v3.oas.models.ExternalDocumentation; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Contact; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SwaggerConfig { @Bean public OpenAPI springShopOpenAPI() { return new OpenAPI() .info(new Info().title("標題") .contact(new Contact()) .description("我的API文檔") .version("v1") .license(new License().name("Apache 2.0").url("http://springdoc.org"))) .externalDocs(new ExternalDocumentation() .description("外部文檔") .url("https://springshop.wiki.github.org/docs")); } }
3. 實體類和控制層注解
在您的實體類和控制層中使用Swagger注解來描述API。
// 實體類注解示例 import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.util.Date; @Data @Builder @NoArgsConstructor @AllArgsConstructor @Accessors(chain = true) @Schema(name = "Employee", description = "$!{table.comment}") public class Emp { @ExcelProperty("ID") @Schema(description = "ID") private int id; @ExcelProperty("用戶名") @Schema(description = "用戶名") private String names; @ExcelProperty("工資") @Schema(description = "工資") private double salary; @ExcelProperty("生日") @Schema(description = "生日") private Date birthday; @ColumnWidth(20) @ExcelProperty("頭像") @Schema(description = "頭像") private String photo; // @ColumnWidth(20) // @DateTimeFormat("yyyy-MM-dd HH:mm:ss") // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") // @ExcelProperty("創(chuàng)建日期") // private Date u_create_time; } // 控制層注解示例 import io.swagger.v3.oas.annotations.Operation; @Operation(summary = "獲取所有員工信息") @GetMapping("/selectAll") public List<Emp> selectAll() { // ... }
4. 通用返回結果封裝
創(chuàng)建一個通用的返回結果類,用于統(tǒng)一API的響應格式。
import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @Builder(toBuilder = true) @AllArgsConstructor @Setter @Getter @Slf4j public class Result<T> { /** * 提示信息 */ @Schema(description = "提示信息") private String message; /** * 是否成功 */ @Schema(description = "是否成功") private boolean success; /** * 返回狀態(tài)碼 */ @Schema(description = "返回狀態(tài)碼") private Integer code; /** * 數(shù)據(jù) */ @Schema(description = "數(shù)據(jù)") private T data; public Result() { } public static Result success() { Result Result = new Result(); Result.setSuccess(Boolean.TRUE); Result.setCode(ResultCode.SUCCESS.getCode()); Result.setMessage(ResultCode.SUCCESS.getMsg()); return Result; } public static Result success(String msg) { Result Result = new Result(); Result.setMessage(msg); Result.setSuccess(Boolean.TRUE); Result.setCode(ResultCode.SUCCESS.getCode()); return Result; } public static Result success(Object data) { Result Result = new Result(); Result.setData(data); Result.setSuccess(Boolean.TRUE); Result.setCode(ResultCode.SUCCESS.getCode()); Result.setMessage(ResultCode.SUCCESS.getMsg()); return Result; } /** * 返回失敗 消息 * * @return Result */ public static Result failure() { Result Result = new Result(); Result.setSuccess(Boolean.FALSE); Result.setCode(ResultCode.FAILURE.getCode()); Result.setMessage(ResultCode.FAILURE.getMsg()); return Result; } /** * 返回失敗 消息 * * @param msg 失敗信息 * @return Result */ public static Result failure(String msg) { Result Result = new Result(); Result.setSuccess(Boolean.FALSE); Result.setCode(ResultCode.FAILURE.getCode()); Result.setMessage(msg); return Result; } public static Result failure(Integer code, String msg) { Result Result = new Result(); Result.setSuccess(Boolean.FALSE); Result.setCode(code); Result.setMessage(msg); return Result; } public static Result failure(String msg, ResultCode exceptionCode) { Result Result = new Result(); Result.setMessage(msg); Result.setSuccess(Boolean.FALSE); Result.setCode(exceptionCode.getCode()); Result.setData(exceptionCode.getMsg()); return Result; } /** * 返回失敗 消息 * * @param exceptionCode 錯誤信息枚舉 * @return Result */ public static Result failure(ResultCode exceptionCode) { Result Result = new Result(); Result.setSuccess(Boolean.FALSE); Result.setCode(exceptionCode.getCode()); Result.setMessage(exceptionCode.getMsg()); return Result; } /** * 返回失敗 消息 * * @param exceptionCode 錯誤信息枚舉 * @param msg 自定義錯誤提示信息 * @return Result */ public static Result failure(ResultCode exceptionCode, String msg) { Result Result = new Result(); Result.setMessage(msg); Result.setSuccess(Boolean.FALSE); Result.setCode(exceptionCode.getCode()); return Result; } }
5. 注解說明
Swagger3的注解與Swagger2有所不同,以下是一些常用注解的對照表:
Swagger2注解 | Swagger3注解 | 注解位置 |
---|---|---|
@Api | @Tag(name = “接口類描述”) | Controller類上 |
@ApiOperation | @Operation(summary = “接口方法描述”) | Controller方法上 |
@ApiImplicitParams | @Parameters | Controller方法上 |
@ApiImplicitParam | @Parameter(description = “參數(shù)描述”) | Controller方法上 |
@ApiParam | @Parameter(description = “參數(shù)描述”) | 方法參數(shù)上 |
@ApiIgnore | @Parameter(hidden = true) 或 @Operation(hidden = true) | - |
@ApiModel | @Schema | DTO類上 |
@ApiModelProperty | @Schema | DTO屬性上 |
6. 訪問Swagger UI
啟動您的Spring Boot應用后,您可以通過以下地址訪問Swagger UI:
http://localhost:8080/doc.html http://localhost:8080/swagger-ui/index.html
在這里,您可以查看API文檔,測試API接口,并獲取相關信息。
到此這篇關于SpringBoot3集成Swagger3的詳細教程的文章就介紹到這了,更多相關SpringBoot3集成Swagger3內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
[Java]詳解Socket和ServerSocket學習筆記
即時類應用或者即時類的游戲,HTTP協(xié)議很多時候無法滿足于我們的需求,這會,Socket對于我們來說就非常實用了。本篇文章主要介紹了Socket和ServerSocket,有興趣的可以了解一下。2016-12-12Java System.currentTimeMillis()時間的單位轉換與計算方式案例詳解
這篇文章主要介紹了Java System.currentTimeMillis()時間的單位轉換與計算方式案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-08-08