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

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.xdnf.cn/news/15444.html

相关文章:

  • Java-IO流
  • Redis单线程详解
  • 多线程--单例模式and工厂模式
  • 2025-7-14-C++ 学习 排序(2)
  • C#——数据与变量
  • 力扣454.四数相加Ⅱ
  • ELK、Loki、Kafka 三种日志告警联动方案全解析(附实战 Demo)
  • AI香烟检测实战:YOLO11模型训练全过程解析
  • 【EM算法】三硬币模型
  • 机器学习/深度学习训练day1
  • 人工智能正逐步商品化,而“理解力”才是开发者的真正超能力
  • 【第一章编辑器开发基础第二节编辑器布局_1水平与垂直布局(1/4)】
  • Sharding-Sphere学习专题(二)案例和分片策略
  • 动态规划题解——乘积最大子数组【LeetCode】
  • 暑期自学嵌入式——Day02(C语言阶段)
  • 【论文阅读】Masked Autoencoders Are Effective Tokenizers for Diffusion Models
  • 内容管理系统指南:企业内容运营的核心引擎
  • Kotlin Map映射转换
  • 论文阅读:WildGS-SLAM:Monocular Gaussian Splatting SLAM in Dynamic Environments
  • 院级医疗AI管理流程—基于数据共享、算法开发与工具链治理的系统化框架
  • ubuntu之坑(十八)——XML相关
  • CSS基础功能介绍和使用
  • Spring Boot项目结构解析:构建高效、清晰的代码框架
  • 关于僵尸进程
  • 进程、线程、协程
  • AI革命,分布式存储也在革命,全闪化拐点已至
  • MFC扩展库BCGControlBar Pro v36.2新版亮点:可视化设计器升级
  • 深入解析Paimon的RowKind数据变更机制 和 KeyValue存储
  • vue中使用西瓜播放器xgplayer (封装)+xgplayer-hls 播放.m3u8格式视频
  • 【王树森推荐系统】物品冷启05:流量调控