当前位置: 首页 > news >正文

Knife4j快速入门

Knife4j 介绍

Knife4j 是一个为 Java 开发人员设计的接口文档生成工具,它基于 Swagger 规范,能够自动从代码中提取接口信息,并生成漂亮的、可交互的 API 文档。Knife4j 可以与 Spring Boot、Spring MVC 等 Java 框架无缝集成,帮助开发者快速生成和维护 API 文档。

以下是 Knife4j 的一些主要特点:

• 自动生成文档:Knife4j 能够自动从代码中提取接口信息,包括接口地址、请求方法、参数、响应等,无需手动编写文档。

• 可交互的文档:生成的文档是可交互的,用户可以直接在文档页面上进行接口调用,查看请求参数和响应结果。

• 支持 Swagger 2.0:Knife4j 遵循 Swagger 2.0 规范,可以与 Swagger 编辑器等工具兼容。

• 丰富的扩展性:Knife4j 提供了丰富的扩展点,允许开发者自定义文档的样式、内容等。

• 集成简单:Knife4j 可以很容易地集成到现有的 Java 项目中,支持 Maven 和 Gradle 构建工具。

• 支持多种语言:Knife4j 生成的文档支持多种语言,方便不同语言背景的开发者使用。

• 安全性:Knife4j 支持接口的安全认证,如 OAuth2、Basic Auth 等,确保文档的安全性。

Knife4j 通常用于后端服务的开发,帮助开发者和前端开发者、测试人员等更好地理解和使用后端接口。通过 Knife4j,可以提高开发效率,减少文档维护的工作量,同时也提高了团队之间的协作效率。

与Spring Boot集成

创建一个Spring Boot项目

在这里插入图片描述

导入MAVEN依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.nie</groupId><artifactId>hello-knife4j</artifactId><version>0.0.1-SNAPSHOT</version><name>hello-knife4j</name><description>hello-knife4j</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.3.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></path></annotationProcessorPaths></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>

创建配置类

package com.nie.helloknife4j.config;import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class Knife4jConfiguration {@Beanpublic OpenAPI openAPI() {return new OpenAPI().info(new Info().title("hello-knife4j项目API").version("1.0").description("hello-knife4j项目的接口文档"));}@Beanpublic GroupedOpenApi userAPI() {return GroupedOpenApi.builder().group("用户信息管理").pathsToMatch("/user/**").build();}@Beanpublic GroupedOpenApi systemAPI() {return GroupedOpenApi.builder().group("产品信息管理").pathsToMatch("/product/**").build();}
}

启动项目

访问:http://localhost:8080/doc.html
在这里插入图片描述

编写测试接口

编写实体类

package com.nie.helloknife4j.entity;import lombok.Data;@Data
public class User {private Integer id;private String name;private String sex;
}

编写Controller层

package com.nie.helloknife4j.controller;import com.nie.helloknife4j.entity.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@RequestMapping("/user")
@RestController
public class UserController {@GetMapping("/getById")public User getById(@RequestParam Integer id) {User user = new User();user.setId( id);user.setName("二狗子");user.setSex("男");return user;}
}

再次访问:http://localhost:8080/doc.html
在这里插入图片描述
可以看到我们编写的测试接口就已经在里面了

调试

我们还可以直接在里面调试
在这里插入图片描述

常用注解

@Tag用于标注在Controller层上面
例如:@Tag(name = "用户信息管理")

@RequestMapping("/user")
@RestController
@Tag(name = "用户信息管理")
public class UserController {

@Operation用于标注在方法上面
例如

    @GetMapping("/getById")@Operation(summary = "根据id查询用户信息")public User getById(@RequestParam Integer id) {User user = new User();user.setId( id);user.setName("二狗子");user.setSex("男");return user;}

@Parameter 用来加到参数上面
例如

    @GetMapping("/getById")@Operation(summary = "根据id查询用户信息")public User getById(@Parameter(description = "用户id") @RequestParam Integer id) {User user = new User();user.setId( id);user.setName("二狗子");user.setSex("男");return user;}

这三个注解在图片里面的展示如下:

在这里插入图片描述

http://www.lryc.cn/news/587537.html

相关文章:

  • 基于微信小程序的财务管理系统的设计与实现;账本管理系统的设计与实现
  • 云手机常见问题解析:解决延迟、掉线等困扰
  • Lovable - AI 驱动的全栈应用开发平台
  • 4G模块 A7670发送英文短信到手机
  • django parler 使用教程
  • Foundry 私钥管理指南:方法与安全最佳实践
  • es的自定义词典和停用词
  • aspnetcore Mvc配置选项中的ModelMetadataDetailsProviders
  • 幻想读 通过多版本并发控制(MVCC)和间隙锁(Gap Lock)的组合也能防止幻读具体说下
  • 基于R语言的极值统计学及其在相关领域中的实践技术应用
  • Linux RDMA Maillist patchsets (Jul. 7 - Jul. 13, 2025)
  • 【LeetCode240.搜索二维矩阵Ⅱ】以及变式
  • 传统机器学习在信用卡交易预测中的卓越表现:从R²=-0.0075到1.0000的华丽转身
  • 【Hadoop科普篇】大数据怎么处理?Hadoop是什么?跟HDFS, Spark, Flink, Hive, Hbase是什么关系?
  • React Three Fiber 实现 3D 模型视图切换、显隐边框、显隐坐标轴
  • JavaScript 性能优化实战:深入性能瓶颈,精炼优化技巧与最佳实践
  • 如何彻底解决PLM/ERP/MES等系统访问速度慢问题?
  • ThinkPHP 8 在 Apache 下启用伪静态
  • .NET 9 GUID v7 vs v4:时间有序性如何颠覆数据库索引性能
  • 【python实用小脚本-139】Python 在线图片批量下载器:requests+PIL 一键保存网络图像
  • Docker 拉取镜像并离线迁移至云桌面指南(以Redis为例)
  • 2025 春秋杯夏季个人挑战赛 Web
  • Spark SQL 之 UT
  • 实战:如何创建 AWS RDS 数据库
  • Android 16k jni修改
  • 构建高效事件驱动架构:AWS S3与SQS集成实践指南
  • 如何连接 AWS RDS 数据库实例
  • AWS RDS PostgreSQL可观测性最佳实践
  • 2025最新android面试指南
  • (三)OpenCV——图像形态学