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

NestJS-Knife4j

文章目录

  • 前言
    • ✅ 一、什么是 Knife4j?
    • ✅ 二、Knife4j 与 Swagger 对比
    • ✅ 三、NestJS-Knife4j 集成
      • 1. 安装依赖
      • 2. 配置 Swagger 与 Knife4j
      • 3. 启动应用并访问接口文档
    • ✅ 四、功能增强
      • 1. **接口分组**
      • 2. **请求/响应示例**
      • 3. **接口文档的美化**
    • ✅ 五、总结


前言

NestJS-Knife4j 是一个集成 Knife4j(一个增强版的 Swagger)功能的 NestJS 插件。Knife4j 是 Swagger 的增强版,提供了更丰富的功能,优化了 UI 和接口文档的展示效果,增强了开发人员和 API 使用者的交互体验。对于已经在使用 Swagger 的项目,Knife4j 提供了一些额外的优点和增强功能。


✅ 一、什么是 Knife4j?

Knife4j 是一个基于 Swagger 的前端 UI 工具,旨在通过增强 Swagger 的功能来优化接口文档的用户体验。它在 Swagger 的基础上提供了以下增强特性:

  • UI 优化:提供了更加友好和直观的接口文档界面。
  • 增强的文档交互:允许用户直接在 UI 中尝试接口请求,支持 API 测试。
  • 丰富的功能:如支持接口分组、API 文档定制、参数样式、请求示例、数据格式展示等。
  • 更好的性能:相比于原生 Swagger,Knife4j 提供了更快速的界面加载和渲染。

✅ 二、Knife4j 与 Swagger 对比

特性SwaggerKnife4j
界面基本的 API 文档展示,UI 较为简洁改进的 UI 界面,提供更多功能,设计更美观
接口分组支持,但自定义不多支持多种分组方式,可以自定义接口分组,增强功能
请求示例支持,但功能有限支持接口请求示例、返回值示例等更详细的说明
API 测试支持接口测试增强的 API 测试功能,更多交互式支持
性能较基础,加载速度较慢更快的加载速度,支持更大的接口文档
集成方式通过 @nestjs/swagger 进行集成通过 nestjs-knife4j 进行集成

✅ 三、NestJS-Knife4j 集成

集成 nestjs-knife4j 可以让你快速实现 Knife4j 的增强功能,提升 API 文档体验。

1. 安装依赖

首先,安装 nestjs-knife4j@nestjs/swagger(如果还没有安装的话):

pnpm add nestjs-knife4j @nestjs/swagger swagger-ui-express

2. 配置 Swagger 与 Knife4j

main.ts 中配置 Swagger 和 Knife4j:

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { Knife4jModule } from 'nestjs-knife4j';async function bootstrap() {const app = await NestFactory.create(AppModule);// 设置 Swagger 配置const config = new DocumentBuilder().setTitle('My API').setDescription('API documentation with Knife4j').setVersion('1.0').addBearerAuth()  // 如果需要认证的话.build();const document = SwaggerModule.createDocument(app, config);SwaggerModule.setup('api-docs', app, document);// 配置 Knife4japp.use('/doc', Knife4jModule.setup(document, app));await app.listen(3000);
}bootstrap();

3. 启动应用并访问接口文档

  • 启动项目后,可以访问以下两个路径:
    • Swaggerhttp://localhost:3000/api-docs
      在这里插入图片描述

    • Knife4jhttp://localhost:3000/doc
      在这里插入图片描述

你会发现,Knife4j 提供了更为丰富的界面和更快的加载速度。

注意:如果你的swagger 集成前缀http://localhost:3000/api/v1/api-docs 的话,
由于 nestjs-knife4j 1.x 目前不支持全局前缀,/doc.html 只能在根路径访问,还是这个:http://localhost:3000/doc.html


✅ 四、功能增强

通过集成 Knife4j,你能享受到以下增强功能:

1. 接口分组

在 Swagger 中,API 的分组通常通过 tags 来实现,但 Knife4j 提供了更加直观的分组方式,并可以在 UI 中进行操作。

@ApiTags('User Management')
@Controller('users')
export class UsersController {@Get()findAll() {return this.userService.findAll();}
}

Knife4j 会自动生成清晰的接口分组,使文档更有组织性。

2. 请求/响应示例

Knife4j 支持展示接口的请求参数和返回数据示例,帮助开发人员和使用者更好地理解接口的使用方式。

@ApiOperation({ summary: 'Create a user' })
@ApiResponse({ status: 201, description: 'User created', type: User })
@Post()
create(@Body() createUserDto: CreateUserDto) {return this.userService.create(createUserDto);
}

Knife4j 会将 @ApiResponse 中的示例返回值自动展示出来。

3. 接口文档的美化

  • Knife4j 提供了自定义的主题,可以对 API 文档的外观进行更多定制,适应不同的 UI 风格。
  • 提供了 RESTful 风格的接口展示,让开发者和接口使用者能够更清晰地看到接口的设计。

✅ 五、总结

功能SwaggerKnife4j
界面美观度较为简洁,基础功能美化过的界面,支持更多交互
接口分组基本支持强大的接口分组,支持更精细化的组织方式
API 请求示例基本支持提供完整的请求/响应示例,增强 API 文档体验
性能普通更好的性能,加载速度更快
集成方式基础的集成方式通过 nestjs-knife4j 快速集成,UI 功能丰富

Knife4j 在 Swagger 基础上提供了更多的功能,优化了界面的美观和交互,适合需要更丰富接口文档的团队,特别是在大型企业应用中,它能显著提升开发者和 API 使用者的体验。

如果你已经在项目中使用了 Swagger,集成 Knife4j 将会是一个很好的提升,特别是在需要优化 API 文档展示、增强协作时。

相关文章:

  • Java Lambda表达式指南
  • 深入理解路由器、IP地址及网络配置
  • 【SF顺丰】顺丰开放平台API对接(Java对接篇)
  • 科大讯飞Q1营收46.6亿同比增长27.7%,扣非净利同比增长48.3%
  • 全排列问题cpp
  • OOA-CNN-LSTM-Attention、CNN-LSTM-Attention、OOA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比
  • 代码随想录算法训练营Day32
  • css3新特性第五章(web字体)
  • 推荐系统/业务,相关知识/概念2
  • Vue 3 Proxy 响应式工作原理
  • Python常用的第三方模块之二【openpyxl库】读写Excel文件
  • Python爬虫实战:获取海口最近2周天气数据,为出行做参考
  • [FPGA基础] FIFO篇
  • SAP ERP HCM HR Forms Workplace
  • 海量数据存储策略
  • 程序的编译(预处理操作)+链接
  • Ray Tracing(光线追踪)与 Ray Casting(光线投射)
  • 强化学习(Reinforcement Learning, RL)​​与​​深度强化学习(Deep Reinforcement Learning, DRL)​​
  • 浅谈AI致幻
  • 如何避免流程形式化导致的效率低下?
  • 广西三江通报“网约车司机加价”:对网约车平台进行约谈
  • 泽连斯基:乌英法美将在伦敦讨论停火事宜
  • 2025年上海车展后天开幕,所有进境展品已完成通关手续
  • 美方因涉港问题对中国官员滥施非法单边制裁,外交部:强烈谴责,对等反制
  • 习近平致电祝贺诺沃亚当选连任厄瓜多尔总统
  • 大尺度色情语聊、撮合卖淫嫖娼!一些交友软件暗藏“桃色陷阱”