欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > NestJS-Knife4j

NestJS-Knife4j

2025/4/23 16:33:33 来源:https://blog.csdn.net/Bruce__taotao/article/details/147399410  浏览:    关键词: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 文档展示、增强协作时。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词