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

news2024/12/26 11:44:08

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

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

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

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

模块装饰器

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

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

image.png

imports: 所有模块集合

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

providers: 所有业务逻辑集合

控制器装饰器

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

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

image.png

image.png

image.png

请求装饰器

@Get 中的请求装饰器

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

image.png
@Query 是取 url 后的 ?isShow=true

image.png

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

image.png

Post 中的请求装饰器

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

image.png

其余请求装饰器

更新:@Patch(‘:id’)

删除 @Delete(‘:id’)

image.png

请求体装饰器(Request body decorators)

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

image.png

请求装饰器小总结

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

比如是 @Get(‘:id’)

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

@Query 是取 url 后的 ?isShow=true

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

响应体装饰器

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

image.png

状态码装饰器

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

image.png

总结

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

image.png

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

Nest 系列 往期文章

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1857827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精密机械中的滚珠螺杆与螺杆支撑座的完美配合!

螺杆支撑座和滚珠螺杆是机械设备中的重要部件。滚珠螺杆通常运用在自动化设备中,需高速运动、高精度定位均依靠它的优良性能,如机床,数控、工业机器人等机械设备。螺杆支撑座装在螺杆的两端,支撑座有两端,固定端和支撑…

SpringBoot的迭代史,SpringBoot和Spring和Java和Maven和Gradle版本兼容介绍

文章目录 系统环境要求:Spring Boot 3.1.xSpring Boot 3.0.xSpring Boot 2.7.xSpring Boot 2.6.xSpring Boot 2.5.xSpring Boot 2.4.xSpring Boot 2.3.xSpring Boot 2.2.xSpring Boot 2.1.xSpring Boot 2.0.xSpring Boot 1.5.xSpring Boot 1.4.xSpring Boot 1.3.xSp…

代码随想录训练营Day 69|并查集理论基础、卡码网107.寻找存在的路径

1.并查集理论基础 并查集理论基础 | 代码随想录 并查集可以解决什么问题呢? 主要就是集合问题,两个节点在不在一个集合,也可以将两个节点添加到一个集合中。 注意:求根是求箭头出发的数 路径压缩:求根的根。把根的根的…

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议(ICIGSRST 2024)

【投稿优惠|权威主办】2024年图像、地质测绘与遥感技术国际学术会议(ICIGSRST 2024) 2024 International Conference on Image, Geological Surveying and Remote Sensing Technology(ICIGSRST 2024) ▶会议简介 2024年图像、地质…

大学生综合能力测评系统(安装+讲解+源码)

【毕设者】大学生综合能力测评系统(安装讲解源码) 分为管理员老师学生端 技术栈 后端: SpringBoot Mysql MybatisPlus 前端: Vue Element 功能截图: 给你安装运行

图片在线加水印工具,快速将图片铺满水印

有些同学为了防止图片未经授权的使用和传播,想要将图片添加铺满水印,但是不知道如何操作。下面小编就来和大家分享如何使用图片在线加水印工具,快速的将图片铺满水印。 有许多在线工具可以帮助我们快速、高效地给图片添加水印。在线添加水印&…

ONLYOFFICE8.1版本桌面编辑器的测评

首先我们先出示一下我们所测评官网的链接: ONLYOFFICE官网链接:ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 一进来就是这么简单整洁的页面,让人看了之后清新开朗,目标明确。 我们这款onlyoffice有着众多优点,如…

HTML5休闲小游戏《猫猫超市》源码,引流、刷广告利器

HTML5休闲小游戏《猫猫超市》源码,直接把源码上传到服务器就能使用了! 下载链接:https://www.huzhan.com/code/goods467910.html

VMware虚拟机卡顿(虚拟机卡死)(调整所有虚拟机内存使其适应预留的主机 RAM (F)、默认进程优先级、不允许使用内存页面修整功能(M))

文章目录 设置编辑——首选项——内存——额外内存——调整所有虚拟机内存使其适应预留的主机 RAM (F)(我把这个勾上了)编辑——首选项——优先级——默认进程优先级虚拟机——设置——选项——高级——不允许使用内存页面修整功能(M) 参考文章&#xff…

Perplexily首席执行官Aravind Srinivas斯里尼·瓦斯回应抄袭和侵权指控

Perplexity的“答案引擎”工作原理是收集网络上的海量信息,构建一个庞大的内容数据库(索引)。用户无需输入关键字,只需在Perplexity的平台或应用中提问,就能获得包含引文及网络内容链接的详细回答。 网站通过“机器人…

线性代数|机器学习-P18快速下降奇异值

文章目录 1. 为什么要低秩矩阵 1. 为什么要低秩矩阵 我们的世界里面有很多数据,如果我们原封不动的发送数据,那么会导致数据量的增大,我们希望对数据进行压缩后再打包压缩,这样的话我们能够在带宽一定的情况下发送更多的数据&…

代码随想录算法训练营第三十三天|452. 用最少数量的箭引爆气球、 435. 无重叠区间、 763.划分字母区间

452. 用最少数量的箭引爆气球 题目链接:452. 用最少数量的箭引爆气球 文档讲解:代码随想录 状态:没想出来 思路:对气球终点位置排序,从第一个气球终点位置射出箭,看这支箭可以尽可能穿过几个气球&#xff0…

Snowflake 外部表的最新增强功能:您需要了解的内容

自从我们上一篇关于如何使用 MinIO 扩展 Snowflake 实现的博客文章以来,Snowflake 对外部表的支持已经发生了重大更新。外部表允许 Snowflake 用户将对象存储(如 MinIO)中的数据视为 Snowflake 中的只读表,而无需迁移。Snowflake …

制造业工厂急需一套erp系统帮他降本增效

随着全球制造业竞争的日益激烈,制造业工厂面临着越来越多的挑战,包括成本控制、生产效率、市场响应速度等方面。在这样的背景下,一套高效的ERP(企业资源规划)系统成为了制造业工厂降本增效的必备工具。本文将探讨ERP系…

视频融合共享平台LntonCVS视频监控平台在农场果园等场景的使用方案

我国大江南北遍布着各类果园。传统的安全防范方式主要是建立围墙,但这种方式难以彻底阻挡不法分子的入侵和破坏。因此,需要一套先进、科学、实用且稳定的安全防范报警系统,以及时发现并处理潜在问题。 需求分析 由于果园地处偏远且缺乏有效防…

【每日刷题】Day74

【每日刷题】Day74 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 1394. 找出数组中的幸运数 - 力扣(LeetCode) 2. 1518. 换水问题 - 力扣&…

solidworks安装教程 - 解决安装后服务不能自动启动问题

Solidworks安装教程,有些同学的电脑过于复杂,产生了正常的服务不能启动。 前面的有个重要的操作操作界面有,大家应该是执行了: 那么我们有变通的方法可以让这个服务启动: 1. cmd用管理员启动 2. 测试下如下命令是否…

2024年在WordPress中创建销售活动的入门级优惠券方法

2024年在WordPress中创建销售活动的入门级优惠券方法 今天我想和大家分享一些关于如何在WordPress网站上创建销售活动的经验。无论你是电商新手还是已经有一定经验的店主,优惠券都是吸引顾客、增加销量的有力工具。在这篇文章中,我将介绍三款适合初学者…

【工具类的编写】

编写工具类 最近在写一个C的项目,发现编写项目的过程真是曲折,所以写通过博客方式来对本项目进行一个重新的梳理。以便于自己来更好的了解这个项目。 1. 时间类的编写 我们都知道在C中获取时间戳很简单,但是怎么把一个时间戳转换为我们平时…

Docker编译nanopc-t4源码流程介绍

官方文档 Android系统编译 vnc加环境变量配置 https://github.com/friendlyarm/docker-cross-compiler-novnc 下载 git clone https://github.com/friendlyarm/docker-ubuntu-lxde-novnc cd docker-ubuntu-lxde-novnc docker build --no-cache -t docker-ubuntu-lxde-novnc …