swagger增强knife4j
1、官网文档
快速开始 | Knife4j
2、引入依赖
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.5.0</version> </dependency>3、配置文件
引入之后,其余的配置,开发者即可完全参考springdoc-openapi的项目说明,Knife4j只提供了增强部分,如果要启用Knife4j的增强功能,可以在配置文件中进行开启。部分配置如下:
# springdoc-openapi项目配置 springdoc: swagger-ui: path: /swagger-ui.html tags-sorter: alpha operations-sorter: alpha api-docs: path: /v3/api-docs group-configs: - group: 'default' paths-to-match: '/**' packages-to-scan: com.ybw.controller # knife4j的增强配置,不需要增强可以不配 knife4j: enable: true setting: language: zh_cnKnife4j更多增强配置明细,请移步文档进行查看。
4、代码
最后,使用OpenAPI3的规范注解,注释各个Spring的REST接口,示例代码如下:
package com.ybw.controller; import com.ybw.dto.BodyDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.enums.ParameterIn; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @RestController @RequestMapping("body") @Tag(name = "body参数") public class BodyController { @Operation(summary = "普通body请求") @PostMapping("/body") public ResponseEntity<BodyDTO> body(@RequestBody BodyDTO bodyDTO) { return ResponseEntity.ok(bodyDTO); } @Operation(summary = "普通body请求+Param+Header+Path") @Parameters({ @Parameter(name = "id", description = "文件id", in = ParameterIn.PATH), @Parameter(name = "token", description = "请求token", required = true, in = ParameterIn.HEADER), @Parameter(name = "name", description = "文件名称", required = true, in = ParameterIn.QUERY) }) @PostMapping("/bodyParamHeaderPath/{id}") public ResponseEntity<BodyDTO> bodyParamHeaderPath(@PathVariable("id") String id, @RequestHeader("token") String token, @RequestParam("name") String name, @RequestBody BodyDTO bodyDTO) { bodyDTO.setName(bodyDTO.getName() + ",receiveName:" + name + ",token:" + token + ",pathID:" + id); return ResponseEntity.ok(bodyDTO); } }package com.ybw.dto; import lombok.Data; /** * @author ybw * @version V1.0 * @className BodyDTO * @date 2026/7/2 **/ @Data public class BodyDTO { private String name; }5、访问
访问Knife4j的文档地址:http://ip:port/doc.html即可查看文档。
6、导出
文档管理-离线文档
