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

Spring Boot整合knife4j实战

本文为个人学习笔记整理,仅供交流参考,非专业教学资料,内容请自行甄别

文章目录

  • 前言
  • 一、Spring Boot整合knife4j
  • 二、前端项目整合@umijs/openapi


前言

  knife4j是一款基于 Swagger 的 API 文档工具,主要用于生成、展示和调试后端 API 文档,提供了更友好的 UI 和交互体验(相比原生 Swagger UI),方便前后端协作时查看接口定义。并且可以配合前端的@umijs/openapi,自动生成前端接口请求代码(包括 TypeScript 类型定义、API 调用函数等),简化前端对接后端接口的流程,避免手动编写重复的请求代码。

一、Spring Boot整合knife4j

  首先需要引入依赖,根据Spring Boot2 和Spring Boot合理选择,我的版本是Spring Boot 2:

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.4.0</version>
</dependency>

  然后在配置文件中进行设置:

# 接口文档相关配置(knife4j是基于Swagger的增强工具)
knife4j:enable: true  # 是否启用knife4j功能,true表示启用,会生成API文档并提供UI界面openapi:  # OpenAPI规范相关配置(Swagger/OpenAPI的核心配置)title: 接口文档  # 接口文档的标题,会显示在文档UI的顶部version: 1.0  # 接口文档的版本号,用于标识API的迭代版本group:  # 接口分组配置(支持多组API文档,适用于大型项目分模块管理)default:  # 默认分组名称(可自定义,如"user-api"、"order-api")api-rule: package  # 接口扫描规则:按包路径扫描(指定包下的接口会被纳入当前分组)api-rule-resources:  # 具体的扫描资源路径(配合api-rule使用)- org.ragdollcat.first.controller  # 需要扫描的控制器包路径,该包下的所有接口会被包含到当前分组文档中

  启动项目,访问http://ip:port/doc.html
在这里插入图片描述
主页展示基本信息

在这里插入图片描述

具体的接口,以及对应字段的含义,可以通过注解的方式定义

  下面这几个注解是定义在接口及对应的方法上的。

  • @Api:注释具体的Controller接口的作用。
  • @ApiOperation:接口中方法的作用,以及方法的描述。
  • @ApiResponses:定义返回值的含义,可以有多个@ApiResponse组成。
  • @ApiParam:定义方法参数的含义
@RestController
@RequestMapping("/")
@Api(tags = "心跳检测controller")
public class MainController {/*** 服务健康检查接口* 用于监控系统或第三方服务检测当前服务是否正常运行* 通常被用于K8s、Nacos等服务注册中心的健康探针** @return BaseResponse<String> 统一响应体*         - 成功时返回状态码200和消息"ok"*         - 若服务异常,会被全局异常处理器捕获并返回对应错误信息*/@GetMapping("/health")@ApiOperation(value = "服务健康检查", notes = "检查服务是否正常运行,正常返回'ok'")@ApiResponses({@ApiResponse(code = 0, message  = "服务正常运行"),@ApiResponse(code = 500, message  = "服务内部错误")})public BaseResponse<String> health() {// 实际生产环境中可添加更复杂的检查逻辑// 例如:数据库连接检测、缓存服务连通性等return ResultUtils.success("ok");}
}

  下面这几个注解是定义在实体类或具体字段上的。

  • @ApiModel:实体类的作用
  • @ApiModelProperty:字段的含义
@Data
@ApiModel(description = "系统统一返回类")
public class BaseResponse<T> implements Serializable {@ApiModelProperty(value = "状态码")private int code;@ApiModelProperty(value = "具体数据")private T data;@ApiModelProperty(value = "状态信息")private String message;public BaseResponse(int code, T data, String message) {this.code = code;this.data = data;this.message = message;}public BaseResponse(int code, T data) {this(code, data, "");}public BaseResponse(ErrorCode errorCode) {this(errorCode.getCode(), null, errorCode.getMessage());}
}

二、前端项目整合@umijs/openapi

  如果使用的是npm管理工具,则使用如下命令导入:

npm i --save-dev @umijs/openapi

  导入成功后,在package.json中可以看到对应的依赖:
在这里插入图片描述
  在项目的根目录下创建openapi.config.js文件,@umijs/openapi 只需要后端提供符合 OpenAPI 规范的接口文档(无论是通过 Swagger、knife4j 还是其他工具生成的),就能完成代码生成工作。而knife4j是后端接口文档的增强工具,它本质上还是基于 OpenAPI 规范输出接口文档,因此可以作为 @umijs/openapi 的 “数据源” 之一,但并非唯一选择。

import { generateService } from '@umijs/openapi'//生成接口代码的配置
generateService({requestLibPath: "import request from '@/request'",// 后端提供的标准的 OpenAPI 文档的路径schemaPath: 'http://localhost:9080/api/v2/api-docs',// 生成的请求文件存放的路径serversPath: './src',
})

  定义脚本进行测试
在这里插入图片描述
  运行后,找到生成的对应controller的mainController.ts文件,发现controller中相应方法的前端请求代码已经生成,并且通过export关键字导出,可以在其他模块中引用
在这里插入图片描述
  在App.vue中导入,启动项目查看效果:

<script setup lang="ts">
import { healthUsingGet } from '@/api/mainController.ts'healthUsingGet().then((response) => {console.log(response)
})</script>

在这里插入图片描述

http://www.dtcms.com/a/324090.html

相关文章:

  • iceberg安装部署
  • imx6ull支持4G模块
  • C++高频知识点(十八)
  • 生产环境中Spring Cloud Sleuth与Zipkin分布式链路追踪实战经验分享
  • 咪咕MGV3200-KLH_GK6323V100C_板号E503744_安卓9_短接强刷包-可救砖
  • uni-app 网络请求终极选型:uni.request、axios、uni-network、alova 谁才是你的真命请求库?
  • CD64.【C++ Dev】多态(3): 反汇编剖析单继承下的虚函数表
  • CPP继承
  • Qt—— 下载、工具介绍以及新建项目
  • 机器学习 [白板推导](八)[EM算法]
  • 机器学习-----K-means算法介绍
  • 打靶日常-XSS(反射型和存储型)
  • UE材质World Position 和 Object Position
  • 第十章:发布与展望 —— 让你的作品在 Edge 中闪耀
  • 力扣(买卖股票的最佳时机I/II)
  • 苍穹外卖-Day1 | 环境搭建、nginx、git、令牌、登录加密、接口文档、Swagger
  • 九、Linux Shell脚本:运算符与表达式
  • 在Ansys Simplorer中设计三相逆变器,并与Maxwell FEA耦合,实现160kW PMSM
  • AI浏览器与传统爬虫范式的技术冲突:重构互联网信息获取的伦理与实践
  • JVM调优好用的内存分析工具!
  • PHP版本控制系统:高效文档管理
  • 精准计算Word文档页数的PHP类
  • 【Redis】持久化方案——RDB和AOF
  • 5Python异常处理与模块导入全指南
  • nginx 反向代理传递原始域名
  • Linux 管道命令及相关命令练习与 Shell 编程、Tomcat 安装
  • Spring AOP 底层实现(面试重点难点)
  • 区块链让物联网真正链接万物
  • Mybatis和MybatisPlus的对比区分理解法
  • Linux入门指南:26个基础命令全解析