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 插件。

相关新闻

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

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

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

2026/8/1 16:36:22 阅读更多 →
ASP.NET MVC HTML帮助器详解与实战技巧

ASP.NET MVC HTML帮助器详解与实战技巧

1. MVC HTML 帮助器入门指南 在ASP.NET MVC开发中,HTML帮助器(HTML Helper)是我们每天都要打交道的工具。这些看似简单的方法背后,实际上封装了大量重复性的HTML生成工作。记得我刚接触MVC时,看到 Html.TextBoxFor() …

2026/8/1 16:35:21 阅读更多 →
Kubios HRV 实用指南

Kubios HRV 实用指南

Kubios HRV实用指南 心率变异性(Heart Rate Variability,HRV)是指连续心跳间期,也就是 RR 间期或 NN 间期之间的细微变化。它不是简单观察心率高低,而是从心跳节律变化中分析自主神经系统、恢复状态、压力反应和运动负…

2026/8/1 16:35:21 阅读更多 →

最新新闻

蚁小二/新媒体管家替代方案:本地优先为什么更适合技术团队

蚁小二/新媒体管家替代方案:本地优先为什么更适合技术团队

蚁小二/新媒体管家替代方案:本地优先为什么更适合技术团队 如果你在找蚁小二或新媒体管家的替代方案,先不要只看平台数量。对技术团队来说,真正决定长期效率的,是账号登录态放在哪里、发布结果能不能追踪,以及能不能直…

2026/8/1 17:22:50 阅读更多 →
Pympress:专业演讲者的双屏PDF演示利器,让每一场演示都从容不迫

Pympress:专业演讲者的双屏PDF演示利器,让每一场演示都从容不迫

Pympress:专业演讲者的双屏PDF演示利器,让每一场演示都从容不迫 【免费下载链接】pympress Pympress is a simple yet powerful PDF reader designed for dual-screen presentations 项目地址: https://gitcode.com/gh_mirrors/py/pympress 你是否…

2026/8/1 17:22:50 阅读更多 →
3天快速入门:用开源四足机器人平台OpenDog V3开启你的机器人学习之旅

3天快速入门:用开源四足机器人平台OpenDog V3开启你的机器人学习之旅

3天快速入门:用开源四足机器人平台OpenDog V3开启你的机器人学习之旅 【免费下载链接】openDogV3 项目地址: https://gitcode.com/gh_mirrors/op/openDogV3 想要亲手打造一个能行走、奔跑的智能四足机器人吗?OpenDog V3开源四足机器人平台让你以…

2026/8/1 17:22:50 阅读更多 →
算力“下沉”时代的突围:端侧AI芯片的痛点、破局者与资本新势力

算力“下沉”时代的突围:端侧AI芯片的痛点、破局者与资本新势力

一、当算力从云端“下沉”到端侧:一场效率革命正在发生2026年,全球AI产业正经历一场深刻的底层逻辑重构。大模型不再满足于“会聊天”,而是进化为“会思考、会执行”的数字员工,推理端算力需求迎来爆发式增长。有机构测算&#xf…

2026/8/1 17:22:50 阅读更多 →
SpringBoot+Vue校园社团管理系统开发实战

SpringBoot+Vue校园社团管理系统开发实战

1. 项目概述:校园社团信息管理系统的技术栈与核心功能这套校园社团信息管理系统采用当前主流的前后端分离架构,后端基于SpringBoot框架构建,前端使用Vue.js实现交互界面,数据存储选用MySQL关系型数据库。系统源码开箱即用&#xf…

2026/8/1 17:22:49 阅读更多 →
LangGraph多智能体动态路由优化实践

LangGraph多智能体动态路由优化实践

1. LangGraph多智能体路由的核心价值在分布式系统架构中,智能体路由机制直接影响着整体服务质量和资源利用率。传统静态路由策略往往面临两个关键挑战:一是无法根据智能体的实时能力差异进行动态分配,二是缺乏对系统负载波动的自适应能力。这…

2026/8/1 17:21:49 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/8/1 13:02:46 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →