springboot3整合knife4j超詳細教程(不帶swagger2玩)
1. 引入依賴
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>2. 配置文件
簡短必要版
# 配置springdoc-openapi,用于文檔化和訪問API
springdoc:
# 配置Swagger UI的訪問路徑和排序方式
swagger-ui:
path: /swagger-ui.html # Swagger UI的訪問路徑
tags-sorter: alpha # 按字母順序排序標簽
operations-sorter: alpha # 按字母順序排序操作
# 配置API文檔的訪問路徑
api-docs:
path: /v3/api-docs # API文檔的訪問路徑
# 配置API分組,用于組織和管理API
group-configs:
- group: 'default' # API分組名稱
paths-to-match: '/**' # 匹配所有路徑
packages-to-scan: com.ykx.easyexceldemo02.controller # 掃描的包,用于自動發(fā)現API
# knife4j的增強配置,不需要增強可以不配(詳細版見下小節(jié))
knife4j:
enable: true
setting:
language: zh_cn詳細全部版
# 配置Knife4j,以啟用Swagger文檔的增強功能和定制化展示
knife4j:
# 啟用Knife4j擴展
enable: true
# 配置展示的文檔分組
documents:
-
# 文檔分組標題
group: 2.X版本
# 文檔分組描述
name: 接口簽名
# 指定接口文檔的位置
locations: classpath:sign/*
# 配置Knife4j的展示細節(jié)和功能開關
setting:
# 設置界面語言
language: zh-CN
# 啟用Swagger模型展示
enable-swagger-models: true
# 啟用文檔管理功能
enable-document-manage: true
# 設置Swagger模型的顯示名稱
swagger-model-name: 實體類列表
# 是否顯示版本信息
enable-version: false
# 是否啟用參數緩存刷新
enable-reload-cache-parameter: false
# 啟用后端腳本支持
enable-after-script: true
# 過濾特定方法類型的multipart/form-data接口
enable-filter-multipart-api-method-type: POST
# 是否過濾所有multipart/form-data類型的接口
enable-filter-multipart-apis: false
# 啟用請求緩存
enable-request-cache: true
# 是否顯示自定義主機名
enable-host: false
# 設置自定義的主機名
enable-host-text: 192.168.0.193:8000
# 啟用自定義首頁
enable-home-custom: true
# 設置自定義首頁的路徑
home-custom-path: classpath:markdown/home.md
# 是否啟用搜索功能
enable-search: false
# 是否顯示頁腳
enable-footer: false
# 啟用自定義頁腳內容
enable-footer-custom: true
# 設置自定義頁腳的內容
footer-custom-content: Apache License 2.0 | Copyright 2019-[浙江八一菜刀股份有限公司](https://gitee.com/xiaoym/knife4j)
# 是否啟用動態(tài)參數
enable-dynamic-parameter: false
# 啟用調試模式
enable-debug: true
# 啟用OpenAPI 3.0的支持
enable-open-api: false
# 啟用接口分組功能
enable-group: true
# 是否啟用CORS跨域支持
cors: false
# 是否啟用生產模式
production: false
# 配置基本的認證信息
basic:
# 啟用基本認證
enable: false
# 設置用戶名
username: test
# 設置密碼
password: 12313注意:要使用Knife4j提供的增強,knife4j.enable=true必須開啟
各個配置屬性說明如下:
屬性
默認值
說明值
knife4j.enable
false
是否開啟Knife4j增強模式
knife4j.cors
false
是否開啟一個默認的跨域配置,該功能配合自定義Host使用
knife4j.production
false
是否開啟生產環(huán)境保護策略,詳情參考文檔
knife4j.basic
對Knife4j提供的資源提供BasicHttp校驗,保護文檔
knife4j.basic.enable
false
關閉BasicHttp功能
knife4j.basic.username
basic用戶名
knife4j.basic.password
basic密碼
knife4j.documents
自定義文檔集合,該屬性是數組
knife4j.documents.group
所屬分組
knife4j.documents.name
類似于接口中的tag,對于自定義文檔的分組
knife4j.documents.locations
markdown文件路徑,可以是一個文件夾(classpath:markdowns/*),也可以是單個文件(classpath:md/sign.md)
knife4j.setting
前端Ui的個性化配置屬性
knife4j.setting.enable-after-script
true
調試Tab是否顯示AfterScript功能,默認開啟
knife4j.setting.language
zh-CN
Ui默認顯示語言,目前主要有兩種:中文(zh-CN)、英文(en-US)
knife4j.setting.enable-swagger-models
true
是否顯示界面中SwaggerModel功能
knife4j.setting.swagger-model-name
Swagger Models
重命名SwaggerModel名稱,默認
knife4j.setting.enable-document-manage
true
是否顯示界面中"文檔管理"功能
knife4j.setting.enable-reload-cache-parameter
false
是否在每個Debug調試欄后顯示刷新變量按鈕,默認不顯示
knife4j.setting.enable-version
false
是否開啟界面中對某接口的版本控制,如果開啟,后端變化后Ui界面會存在小藍點
knife4j.setting.enable-request-cache
true
是否開啟請求參數緩存
knife4j.setting.enable-filter-multipart-apis
false
針對RequestMapping的接口請求類型,在不指定參數類型的情況下,如果不過濾,默認會顯示7個類型的接口地址參數,如果開啟此配置,默認展示一個Post類型的接口地址
knife4j.setting.enable-filter-multipart-api-method-type
POST
具體接口的過濾類型
knife4j.setting.enable-host
false
是否啟用Host
knife4j.setting.enable-host-text
false
HOST地址
knife4j.setting.enable-home-custom
false
是否開啟自定義主頁內容
knife4j.setting.home-custom-path
主頁內容Markdown文件路徑
knife4j.setting.enable-search
false
是否禁用Ui界面中的搜索框
knife4j.setting.enable-footer
true
是否顯示Footer
knife4j.setting.enable-footer-custom
false
是否開啟自定義Footer
knife4j.setting.footer-custom-content
false
自定義Footer內容
knife4j.setting.enable-dynamic-parameter
false
是否開啟動態(tài)參數調試功能
knife4j.setting.enable-debug
true
啟用調試
knife4j.setting.enable-open-api
true
顯示OpenAPI規(guī)范
knife4j.setting.enable-group
true
顯示服務分組
3. 常用注解
1. 類級別注解
@Operation
用于描述控制器類中的單個操作。
@Operation(summary = "獲取用戶列表", description = "返回所有用戶的列表")
@GetMapping("/users")
public List<User> getUsers() {
// ...
}屬性:
summary:簡短描述。description:詳細說明。tags:標簽,用于分類API。responses:響應描述。
@Tag
用于為API操作分組。
@Tag(name = "用戶管理", description = "用戶相關操作")
@RestController
@RequestMapping("/users")
public class UserController {
// ...
}
屬性:
name:標簽名。description:標簽描述。
2. 方法級別注解
@Operation
用于描述單個操作,類似于類級別使用方式。
@Operation(summary = "獲取用戶列表", description = "返回所有用戶的列表")
@GetMapping("/users")
public List<User> getUsers() {
// ...
}
屬性:
summary:簡短描述。description:詳細說明。tags:標簽,用于分類API。responses:響應描述。
@ApiResponses
用于描述API操作的響應。
@Operation(summary = "獲取用戶列表")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "成功", content = @Content(mediaType = "application/json", schema = @Schema(implementation = User.class))),
@ApiResponse(responseCode = "400", description = "請求參數錯誤"),
@ApiResponse(responseCode = "404", description = "找不到資源"),
@ApiResponse(responseCode = "500", description = "服務器內部錯誤")
})
@GetMapping("/users")
public List<User> getUsers() {
// ...
}屬性:
value:包含多個@ApiResponse注解。
@ApiResponse
用于描述單個響應。
屬性:
responseCode:HTTP狀態(tài)碼。description:描述信息。content:響應內容類型和模式。
3. 參數級別注解
@Parameter
用于描述單個參數。
@Operation(summary = "獲取用戶詳情")
@GetMapping("/{id}")
public User getUser(@Parameter(description = "用戶ID", required = true) @PathVariable Long id) {
// ...
}
屬性:
name:參數名。description:參數描述。required:是否必須參數。schema:參數模式。
@Parameters
用于描述多個參數。
@Operation(summary = "分頁獲取用戶列表")
@Parameters({
@Parameter(name = "page", description = "頁碼", required = true, schema = @Schema(type = "integer", example = "1")),
@Parameter(name = "size", description = "每頁數量", required = true, schema = @Schema(type = "integer", example = "10"))
})
@GetMapping("/users")
public List<User> getUsersByPage(@RequestParam int page, @RequestParam int size) {
// ...
}
屬性:
value:包含多個@Parameter注解。
4. 模型類注解
@Schema
用于描述模型類和字段的信息。
@Schema(description = "用戶實體")
public class User {
@Schema(description = "用戶ID", example = "1")
private Long id;
@Schema(description = "用戶名", example = "Alice")
private String name;
@Schema(description = "用戶年齡", example = "30")
private Integer age;
// getters and setters
}屬性:
description:字段描述。example:示例值。required:是否必須字段。type:字段類型。
@ArraySchema
用于描述數組類型的字段。
@Schema(description = "用戶列表")
public class UserListResponse {
@ArraySchema(schema = @Schema(implementation = User.class), description = "用戶數組")
private List<User> users;
// getters and setters
}屬性:
schema:數組元素的模式。description:數組描述。
5. 文件上傳相關注解
@Operation(summary = "上傳文件")
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String uploadFile(@Parameter(description = "文件", required = true) @RequestParam("file") MultipartFile file) {
// ...
}
4. 訪問地址
http://localhost:8080/doc.html

到此這篇關于springboot3整合knife4j詳細版,包會!(不帶swagger2玩)的文章就介紹到這了,更多相關springboot3整合knife4j內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java之SpringBoot集成ActiveMQ消息中間件案例講解
這篇文章主要介紹了Java之SpringBoot集成ActiveMQ消息中間件案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-07-07
Java線程池中execute()和submit()兩個方法的區(qū)別(源碼&實戰(zhàn)全解析)
線程池是現代多線程編程中的重要工具,它能顯著提升任務處理效率并優(yōu)化系統(tǒng)資源,這篇文章主要介紹了Java線程池中execute()和submit()兩個方法區(qū)別的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2026-03-03

