3 nestjs 集成 Swagger

2024-08-21 16:52
文章标签 swagger 集成 nestjs

本文主要是介绍3 nestjs 集成 Swagger,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

安装依赖

pnpm install @nestjs/swagger class-validator

在 main.ts 中定义 SwaggerModule 类

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';async function bootstrap() {const app = await NestFactory.create(AppModule);const config = new DocumentBuilder().setTitle('water-admin').setDescription('Background system based on Nest.js + Vue3 full stack').setVersion('1.0').build();const document = SwaggerModule.createDocument(app, config);// 设置swagger的地址url: /apiSwaggerModule.setup('api', app, document);await app.listen(3000);
}bootstrap();
方法描述
setTitle文档标题
setDescription文档描述
setVersion文档版本
setTermsOfService文档服务条款
setContact文档联系信息
setLicense文档许可证信息
addServer文档服务地址
setExternalDoc文档外部链接
setBasePath设置文档基础路径
addTag添加文档标签
addExtension添加扩展
addSecurity添加安全方案
addGlobalParameters添加全局参数
addSecurityRequirements添加安全需求
addBearerAuth添加 Bearer Token 认证
addOAuth2添加 OAuth2 认证
addApiKey添加 ApiKey
addBasicAuth添加基础认证
addCookieAuth添加 Cookie 认证
build构建服务

在 DTO 中使用装饰器

import { ApiProperty } from '@nestjs/swagger';
import { IsNumberString, IsOptional, IsUUID } from 'class-validator';export class CreateWaterDto {@ApiProperty({type: String,description: '岗位名称',required: false,default: '前端工程师',})name?: string;@ApiProperty({type: String,description: '所属组织',default: 'f45cd48b-e703-49db-91be-ae7f594e73e0',required: false,})@IsOptional()@IsUUID('all', { message: 'orgId 参数不正确' })orgId?: string;@ApiProperty({type: Number,description: '开始日期',default: 1721145600000,required: false,})@IsOptional()@IsNumberString({}, { message: '开始日期必须是时间戳格式' })startTime?: number;@ApiProperty({type: Number,description: '结束日期',default: 1721318399999,required: false,})@IsOptional()@IsNumberString({}, { message: '结束日期必须是时间戳格式' })endTime?: number;
}

在 Controller 控制器 中使用装饰器

import {Controller,Get,Post,Body,Patch,Param,Delete,
} from '@nestjs/common';
import { WaterService } from './water.service';
import { CreateWaterDto } from './dto/create-water.dto';
import { UpdateWaterDto } from './dto/update-water.dto';
import { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger';@ApiTags('岗位管理')
@Controller('water')
export class WaterController {constructor(private readonly waterService: WaterService) {}@Post()@ApiOkResponse({ type: CreateWaterDto })@ApiOperation({ summary: '获取岗位管理列表' })create(@Body() createWaterDto: CreateWaterDto) {return 'ff------ 火箭 🚀';}@Get()findAll() {return this.waterService.findAll();}@Get(':id')findOne(@Param('id') id: string) {return this.waterService.findOne(+id);}@Patch(':id')update(@Param('id') id: string, @Body() updateWaterDto: UpdateWaterDto) {return this.waterService.update(+id, updateWaterDto);}@Delete(':id')remove(@Param('id') id: string) {return this.waterService.remove(+id);}
}

在这里插入图片描述

常用 Swagger 装饰器

装饰器描述
@ApiTags为控制器或方法添加标签,用于组织 Swagger UI 文档
@ApiOperation为控制器方法添加操作描述,包括摘要和详细描述
@ApiParam描述路径参数、请求参数或响应参数,包括名称、类型、描述等
@ApiBody指定请求体的 DTO 类型,用于描述请求体的结构
@ApiResponse描述 API 的响应,包括状态码、描述等
@ApiBearerAuth指定请求需要携带 Bearer Token,用于身份验证
@ApiProperty为 DTO 类型的属性添加元数据,如描述、默认值等
@ApiQuery描述查询参数,包括名称、类型、描述等
@ApiHeader描述请求头信息,包括名称、类型、描述等
@ApiExcludeEndpoint标记一个控制器方法不在 Swagger UI 中显示

这篇关于3 nestjs 集成 Swagger的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093740

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

springboot2.1.3 hystrix集成及hystrix-dashboard监控详解

《springboot2.1.3hystrix集成及hystrix-dashboard监控详解》Hystrix是Netflix开源的微服务容错工具,通过线程池隔离和熔断机制防止服务崩溃,支持降级、监... 目录Hystrix是Netflix开源技术www.chinasem.cn栈中的又一员猛将Hystrix熔

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

SpringBoot集成P6Spy的实现示例

《SpringBoot集成P6Spy的实现示例》本文主要介绍了SpringBoot集成P6Spy的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录本节目标P6Spy简介抛出问题集成P6Spy1. SpringBoot三板斧之加入依赖2. 修改

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal

SpringBoot集成Shiro+JWT(Hutool)完整代码示例

《SpringBoot集成Shiro+JWT(Hutool)完整代码示例》ApacheShiro是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,在现代应用开发中,Shiro因... 目录一、背景介绍1.1 为什么使用Shiro?1.2 为什么需要双Token?二、技术栈组成三、环境

Java 与 LibreOffice 集成开发指南(环境搭建及代码示例)

《Java与LibreOffice集成开发指南(环境搭建及代码示例)》本文介绍Java与LibreOffice的集成方法,涵盖环境配置、API调用、文档转换、UNO桥接及REST接口等技术,提供... 目录1. 引言2. 环境搭建2.1 安装 LibreOffice2.2 配置 Java 开发环境2.3 配

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心