当前位置: 首页 > 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 文档展示、增强协作时。


http://www.mrgr.cn/news/99282.html

相关文章:

  • 9.策略模式:思考与解读
  • HTTP/1.1 队头堵塞
  • [架构之美]一键服务管理大师:Ubuntu智能服务停止与清理脚本深度解析
  • PostgreSQL 用户资源管理
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(8): - (1)复习一些语法(2)「~ています」
  • Linux系统-cat命令/more命令/less命令
  • 软件工程师中级考试-上午知识点总结(上)
  • LTspice测量SiC MOSFET的C-V特性
  • Linux Wlan-四次握手(eapol)框架流程
  • 本地搭建一个简易版本的 Web3 服务
  • 可穿戴设备待机功耗需降至μA级但需保持实时响应(2万字长文深度解析)
  • python测试框架之pytest
  • Cypress EZ-USB CX3 适配输出imx586相机
  • 【全网最全】23种设计模式思维导图详解 | 含React/Vue/Spring实战案例
  • 数据结构--并查集-高效处理连通性问题
  • python——函数
  • 【C++篇】string类的终章:深浅拷贝 + 模拟实现string类的深度解析(附源码)
  • SQL Server基础
  • Python+Word实现周报自动化的完整流程
  • 【22】Strongswan sa ——IKE_SA task_manager_v1