《Nest系列 - 3. 🔥掌握常见Nest 装饰器,奠定坚实基础!!!!!!》

nest 一个核心就是依赖注入,而中的大部分功能都是通过装饰器来实现的,那什么是装饰器呢? 就是一个 @xxx ,诸如 @Module,@controller, @Get, @Post

那这样有什么好处呢? 可以把他理解成一个方法,在不改变原有的代码逻辑情况下,添加额外的功能,比如日志记录,权限控制,数据验证,参数解析,等等,只需要使用@xxx(xx) 就做了一次逻辑处理。

所以装饰器是一种优雅的方式来修改和增强 类及其成员的行为。

按照上一节的学习顺序,我们先看最熟悉的装饰器模块装饰器/路由装饰器/请求体装饰器/响应体装饰器。不常用的这里也不做介绍,后面遇到再说 😄😄😄

模块装饰器

@Module(metadata):定义一个模块类,接受模块的元数据(如导入的模块,控制器,提供者 等)=》 将诸多功能,进行组合。也可以组合其他模块。这里AppModule 的模块装饰器是一个根模块,相当于App.vue。

而其他模块又是组合自己模块的控制器, 提供者

imports: 所有模块集合

controllers: 所有路由集合 (当然也可以在controllers写业务逻辑,但是还是提倡业务逻辑分离)

providers: 所有业务逻辑集合

控制器装饰器

当然你也可以理解成路由匹配装饰器

@Controller(path?): 定义一个控制器类,可以接收一个可选的路径参数

请求装饰器

@Get 中的请求装饰器

@Param 是取路径中的参数,比如 /1 种的 1

@Query 是取 url 后的 ?isShow=true

tip: 在 @Param('id') 或者 @Query('isShow') 中写相关的字段,相当于一种解构,我具体要解析的字段。不然会返回一个对象

Post 中的请求装饰器

通过 @Body 取到 body 部分,我们一般用 dto 的 class 来接受请求体里的参数(就是把请求参数也做作为一个类导出)

其余请求装饰器

更新:@Patch(':id')

删除 @Delete(':id')

请求体装饰器(Request body decorators)

这个大家也挺常见,比如服务端经常会让你截图,看看你的请求参数,请求地址,做文件上传,还会让你看看你的content-type,是不是符合要求的,而这些数据,都是可以通过@Request 装饰器获取到

请求装饰器小总结

其实对于什么方式的装饰器,我们直接用就行,比如@Get, @Post,@Patch, @Delete 关键是对参数的解析

比如是 @Get(':id')

要用 @Param 是取路径中的参数,比如 /xxx/1 种的 1

@Query 是取 url 后的 ?isShow=true

如果是post 类型的body ,要用 @Body 取到 body 部分。而我们一般用 dto 的 class 来接受请求体里的参数

响应体装饰器

服务端以怎样的数据格式返回数据给前端用,包括code,message, data 等

状态码装饰器

可以规定返回的状态码,当然也可以直接在响应体装饰器上设置(status(xxx))

总结

这一篇,整体来说比较枯燥,还有很多装饰器没有聊,只是把客户端发请求,服务端对路径/参数做解析,返回数据到客户端的装饰器 做了一些介绍

其他装饰器大致也是一样的道理,后面遇到我们再做说明

Nest 系列 往期文章

1.《Nest系列 - 1. 🔥运行一个Nest项目以及整体目录学习》

2.《Nest系列 - 2. 🔥Nest 代码生成器,让你告别base代码书写!!!》

相关推荐
康小汪7 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
智能运维指南7 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
白山编程大哥9 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
Flynt10 小时前
我把热榜那篇"禁用 axios"逐条实测了一遍:结论大体对,坑在它没讲的地方
前端·javascript·axios
Csvn10 小时前
bundle优化
前端
北冥有鱼11 小时前
发版后动态路由点击报 `Failed to fetch dynamically imported module`」问题上的完整排查与修复过程
前端·vue.js
静默回滚11 小时前
视频压到 25 MB 以内,码率要算、音轨要扣、余量要留
前端
用户372037492601811 小时前
把 10MB 中文语义模型塞进浏览器:STSB 做到教师模型的 93%,但线上 top1 只有 42%
前端
光锥智能11 小时前
海康机器人举行2026移动机器人新品发布会:箱式存拣升级,「明智」系列发布
java·前端·机器人
计算机魔术师11 小时前
Anthropic 上市文件最吓人的一幕,不是亏损 807 亿
前端