1. 引入依赖dependency groupIdcom.github.xiaoymin/groupId artifactIdknife4j-openapi3-jakarta-spring-boot-starter/artifactId version4.4.0/version /dependency2. 配置文件简短必要版# 配置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 # 扫描的包用于自动发现API # knife4j的增强配置不需要增强可以不配详细版见下小节 knife4j: enable: true setting: language: zh_cn详细全部版# 配置Knife4j以启用Swagger文档的增强功能和定制化展示 knife4j: # 启用Knife4j扩展 enable: true # 配置展示的文档分组 documents: - # 文档分组标题 group: 2.X版本 # 文档分组描述 name: 接口签名 # 指定接口文档的位置 locations: classpath:sign/* # 配置Knife4j的展示细节和功能开关 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) # 是否启用动态参数 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.enabletrue必须开启各个配置属性说明如下属性默认值说明值knife4j.enablefalse是否开启Knife4j增强模式knife4j.corsfalse是否开启一个默认的跨域配置,该功能配合自定义Host使用knife4j.productionfalse是否开启生产环境保护策略,详情参考文档knife4j.basic对Knife4j提供的资源提供BasicHttp校验,保护文档knife4j.basic.enablefalse关闭BasicHttp功能knife4j.basic.usernamebasic用户名knife4j.basic.passwordbasic密码knife4j.documents自定义文档集合该属性是数组knife4j.documents.group所属分组knife4j.documents.name类似于接口中的tag,对于自定义文档的分组knife4j.documents.locationsmarkdown文件路径,可以是一个文件夹(classpath:markdowns/*)也可以是单个文件(classpath:md/sign.md)knife4j.setting前端Ui的个性化配置属性knife4j.setting.enable-after-scripttrue调试Tab是否显示AfterScript功能,默认开启knife4j.setting.languagezh-CNUi默认显示语言,目前主要有两种:中文(zh-CN)、英文(en-US)knife4j.setting.enable-swagger-modelstrue是否显示界面中SwaggerModel功能knife4j.setting.swagger-model-nameSwagger Models重命名SwaggerModel名称,默认knife4j.setting.enable-document-managetrue是否显示界面中文档管理功能knife4j.setting.enable-reload-cache-parameterfalse是否在每个Debug调试栏后显示刷新变量按钮,默认不显示knife4j.setting.enable-versionfalse是否开启界面中对某接口的版本控制,如果开启后端变化后Ui界面会存在小蓝点knife4j.setting.enable-request-cachetrue是否开启请求参数缓存knife4j.setting.enable-filter-multipart-apisfalse针对RequestMapping的接口请求类型,在不指定参数类型的情况下,如果不过滤,默认会显示7个类型的接口地址参数,如果开启此配置,默认展示一个Post类型的接口地址knife4j.setting.enable-filter-multipart-api-method-typePOST具体接口的过滤类型knife4j.setting.enable-hostfalse是否启用Hostknife4j.setting.enable-host-textfalseHOST地址knife4j.setting.enable-home-customfalse是否开启自定义主页内容knife4j.setting.home-custom-path主页内容Markdown文件路径knife4j.setting.enable-searchfalse是否禁用Ui界面中的搜索框knife4j.setting.enable-footertrue是否显示Footerknife4j.setting.enable-footer-customfalse是否开启自定义Footerknife4j.setting.footer-custom-contentfalse自定义Footer内容knife4j.setting.enable-dynamic-parameterfalse是否开启动态参数调试功能knife4j.setting.enable-debugtrue启用调试knife4j.setting.enable-open-apitrue显示OpenAPI规范knife4j.setting.enable-grouptrue显示服务分组3. 常用注解1. 类级别注解Operation用于描述控制器类中的单个操作。Operation(summary 获取用户列表, description 返回所有用户的列表) GetMapping(/users) public ListUser 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 ListUser 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 ListUser getUsers() { // ... }属性value包含多个ApiResponse注解。ApiResponse用于描述单个响应。属性responseCodeHTTP状态码。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 ListUser 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 ListUser 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