发布时间:2026/8/1 16:36:24
NestJS简明教程——快速配置 快速配置记录 NestJS 项目的初始化、依赖注入、控制器、DTO、数据校验与 API 文档配置。初始化项目nest new first-app-g-s生成项目架构图使用madge分析模块依赖并生成架构图。安装npminstall-gmadge生成图片madge--imagegraph.svg ./src/main.ts依赖注入依赖关系在未使用依赖注入时UserController会自行创建UserService实例classUserService{findUser(){return查询用户;}}classUserController{privateuserService:UserService;constructor(){this.userServicenewUserService();}getUser(){returnthis.userService.findUser();}}UserController │ │ 依赖 ▼ UserService控制反转IoC传统方式由Controller主动创建ServiceController │ │ 创建 ▼ Service使用 IoC 后由容器负责管理和提供依赖IoC 容器 │ │ 注入 ▼ Controller ◀── ServiceNestJS 中的依赖注入提示依赖注入的核心是IoC 容器。它负责管理类的生命周期和依赖关系。Serviceimport{Injectable}fromnestjs/common;Injectable()// 表示该类可以由 IoC 容器管理exportclassUserService{findUser(){return用户数据;}}Controllerimport{Controller,Get}fromnestjs/common;import{UserService}from./user.service;Controller(users)exportclassUserController{constructor(privatereadonlyuserService:UserService){}Get()getUser(){returnthis.userService.findUser();}}提示可在dist目录查看编译后的 JavaScript 文件了解依赖注入的实现方式。Controller生成 Controllernest g controller todo --no-specCRUD 示例Controller(todo)exportclassTodoController{constructor(privatereadonlytodoService:TodoService){}Get()findAll(){returnthis.todoService.findAllTodos();}Get(:id)findOne(Param(id)id:string){returnthis.todoService.findOneTodo(Number(id));}Post()create(Body()newTodo:any){returnthis.todoService.createTodo(newTodo);}Patch(:id)update(Param(id)id:string,Body()updateTodoBody:any){returnthis.todoService.updateTodo(Number(id),updateTodoBody);}Delete(:id)deleteTodo(Param(id)id:string,Res({passthrough:true})res:Response,){constresultthis.todoService.deleteTodo(Number(id));if(result){return{message:Todo deleted successfully,};}returnres.status(HttpStatus.BAD_REQUEST).json({message:bad request,});}}提示Res({ passthrough: true })表示 NestJS 仍会自动将返回值转换为 JSON因此不需要手动调用res.json()。DTO 与 Entity推荐使用class定义 DTOexportclassCreateTodoDto{title:string;content:string;isCompleted:boolean;}PartialType可基于已有类型创建新类型并将原类型的所有属性改为可选import{PartialType}fromnestjs/mapped-types;exportclassUpdateTodoDtoextendsPartialType(CreateTodoDto){}Pipe参数校验与转换安装依赖pnpmaddclass-validator class-transformer配置全局验证管道在main.ts中添加import{ValidationPipe}fromnestjs/common;import{NestFactory}fromnestjs/core;import{AppModule}from./app.module;asyncfunctionbootstrap(){constappawaitNestFactory.create(AppModule);app.useGlobalPipes(newValidationPipe({transform:true,// 自动转换类型例如将 params 中的 string ID 转为 numberwhitelist:true,// 自动移除 DTO 未声明的属性forbidNonWhitelisted:true,// 请求体含有未声明属性时抛出异常}),);awaitapp.listen(3000);}bootstrap();为 DTO 添加验证装饰器// 这里只列出部分常用校验器import{IsBoolean,IsNotEmpty,IsString}fromclass-validator;exportclassCreateTodoDto{IsNotEmpty()IsString()title!:string;IsNotEmpty()IsString()content!:string;IsNotEmpty()IsBoolean()isCompleted!:boolean;}提示NestJS CLI 可使用以下命令生成 CRUD 资源模板nest g resourceAPI 文档Swagger安装依赖pnpmaddnestjs/swagger配置 Swagger在main.ts中添加 Swagger 配置import{DocumentBuilder,SwaggerModule}fromnestjs/swagger;constconfignewDocumentBuilder().setTitle(Todos example).setDescription(The todo API description).setVersion(1.0).addServer(http://localhost:3000,localhost).addTag(todos).build();constdocumentFactory()SwaggerModule.createDocument(app,config);SwaggerModule.setup(api,app,documentFactory,{jsonDocumentUrl:swagger/json,});配置 Swagger CLI 插件在nest-cli.json中添加{$schema:https://json.schemastore.org/nest-cli,collection:nestjs/schematics,sourceRoot:src,compilerOptions:{deleteOutDir:true,plugins:[nestjs/swagger]}}提示访问http://localhost:3000/api查看 Swagger 文档。访问http://localhost:3000/swagger/json查看 Swagger 的 JSON 文档。使用PartialType时应从nestjs/swagger导入。提高编译速度SWC安装依赖pnpmaddswc/cli swc/core-D配置 SWC在nest-cli.json中添加{compilerOptions:{builder:swc,typeCheck:true}}兼容 Swagger在main.ts中导入新增的元数据文件importmetadatafrom./metadata;awaitSwaggerModule.loadPluginMetadata(metadata);注意不推荐同时使用 SWC 构建器与 Swagger CLI 插件。

相关新闻

2026/8/1 16:36:24

React中如何为非受控组件设置默认值?:深入解析与实战指南

一、React中如何为非受控组件设置默认值?:概念与场景 1.1 什么是非受控组件 在React中,表单元素的处理方式分为两种:受控组件与非受控组件。受控组件的值由React的state控制,每次输入都会触发onChange并更新state;而非受控组件的值由DOM自身管理,React通过ref来读取…

2026/8/1 16:31:24

3分钟搞定洛雪音乐音源配置:解锁全网无损音乐的终极指南

3分钟搞定洛雪音乐音源配置:解锁全网无损音乐的终极指南 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 想要在洛雪音乐中享受全网音乐资源吗?厌倦了在不同音乐平台间来回切…

2026/8/1 20:16:52

如何快速去除视频水印:5分钟掌握AI智能修复技术

如何快速去除视频水印:5分钟掌握AI智能修复技术 【免费下载链接】WatermarkRemover 批量去除视频中位置固定的水印 项目地址: https://gitcode.com/gh_mirrors/wa/WatermarkRemover 你是否曾为视频中顽固的水印而烦恼?无论是下载的素材、录制的教…

2026/8/1 20:16:52

免费解锁Windows远程桌面功能:RDP Wrapper完整使用指南

免费解锁Windows远程桌面功能:RDP Wrapper完整使用指南 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 还在为Windows家庭版无法使用远程桌面而烦恼吗?每次系统更新后远程桌面就罢工&#x…

2026/8/1 20:16:52

亚马逊英国站儿童玩具全套认证与合规

亚马逊英国站儿童玩具全套认证与合规亚马逊英国站14岁及以下儿童玩具,需遵守英国本土法规及平台合规规则,核心合规包含:UKCA认证、BS EN 71安全检测、亚马逊TIC核验、化学合规、包装标识合规,特殊玩具需额外专项认证,不…

2026/8/1 20:16:52

5个理由告诉你为什么AutoKey是Linux桌面自动化的终极解决方案

5个理由告诉你为什么AutoKey是Linux桌面自动化的终极解决方案 【免费下载链接】autokey AutoKey, a desktop automation utility for Linux and X11. 项目地址: https://gitcode.com/gh_mirrors/au/autokey 你是否厌倦了重复输入相同的长文本?是否想要一键完…

2026/8/1 20:16:52

AI病理×空间蛋白组:肿瘤微环境深度解析与临床转化

1. 空间组学临床应用面临通量限制空间蛋白组和空间转录组能够在组织原位解析细胞组成、分子表型和空间关系,但高维空间实验通常存在成本较高、流程复杂和样本通量有限等问题。临床病理积累了大量H&E切片,这类样本获取方便、成本相对较低,…

2026/8/1 16:23:38

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/8/1 0:03:49

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/1 0:03:49

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/1 0:03:49

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

2026/8/1 0:03:49

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/1 0:03:49

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/1 0:03:49

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…