NestJS 基础概念

这篇具有很好参考价值的文章主要介绍了NestJS 基础概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 1. Module

Module是NestJS 的基本组织单位。

模块系统基于 Node.js 的 CommonJS 模块系统,但提供了更高级别的抽象和组织方式。通过使用模块,你可以将应用程序拆分成多个独立且可复用的部分,每个模块都负责实现特定的功能或业务逻辑。

模块可以封装相关的代码、配置和依赖关系,使得模块内部的实现细节对外不可见,只暴露必要的接口和功能。

模块之间可以定义明确的依赖关系,通过导入(imports)其他模块来获取所需的功能和服务。这有助于管理复杂应用程序中的依赖关系,确保组件之间的正确交互。

可以使用 @Module() 装饰器来定义一个模块,并在装饰器的元数据中指定模块的提供者、控制器、导入的模块等。这样,NestJS 就可以根据这些信息来构建和管理应用程序的模块结构。

 文章来源地址https://www.toymoban.com/news/detail-844437.html

2. Provider 

Provider是基于依赖注入的概念(Dependency Injection,简称DI)

是一种实现控制反转(Inversion of Control,简称IoC)的设计模式。

基本思想是解耦,通过外部框架,将类所依赖的对象(Provider)注入到类中,使得类在运行时动态地获取其所依赖的对象实例,从而实现松耦合。而不是硬编码方式直接关联在一起。

在 NestJS 中,你通常在模块的 @Module 装饰器的 providers 数组中注册提供者。这告诉 NestJS 该模块提供了哪些服务或值,并且这些提供者可以在该模块的作用域内被注入到其他类中。同时,如果你需要将提供者导出到其他模块使用,你可以在 exports 数组中指定它们。

可以通过装饰器(如 @Injectable())和构造函数参数来声明和注入依赖关系,NestJS 会在运行时自动解析这些依赖关系,并将相应的实例注入到类中。

 

3.Middleware

Middleware实际上是一个函数,它可以在请求或响应对象上执行某些操作,或者在传递给下一个处理程序之前进行预处理。这些Middleware函数在请求的处理过程中,按照定义的顺序依次执行,形成了一个类似洋葱模型的层层包裹和处理的结构。


4. Guards(守卫):

通常用于身份验证、角色检查或权限验证。
是最先执行的中间件,用于确定是否允许请求继续处理。(在请求还没到控制器之前执行)

 

5. Interceptors (拦截器):

如果 Guards 允许请求继续,那么 Interceptors 会在 Pipes 和Controller方法之前执行。

主要功能为:

    1. 在方法执行前/后绑定额外的逻辑:
      拦截器可以在Controller方法被调用之前或之后执行自定义代码。这允许你执行如日志记录等每个请求都需要执行的任务。

    2. 转换函数返回的结果:
      你可以使用拦截器来修改从控制器方法返回的数据。例如,你可能希望转换数据的格式,或添加额外的元数据到响应中。

    3. 转换函数抛出的异常:
      如果控制器方法抛出了异常,拦截器可以捕获这个异常,并根据需要转换它。这可以用于统一异常处理,例如将内部错误转换为更友好的用户错误信息。

    4. 扩展基本函数行为:
      拦截器允许你在不修改原始控制器方法的情况下添加新的功能。这意味着你可以在不破坏现有代码的基础上,增强应用程序的功能。

    5. 根据特定条件完全覆盖一个函数:
      有时,你可能想要根据某些条件(如缓存)完全替换控制器方法的默认行为。拦截器可以做到这一点,通过检查特定条件,并在满足这些条件时返回预定义的结果或执行不同的逻辑。

 

6. Pipes(管道):

主要用于对请求接口的入参进行验证和转换的前置操作。(每当一个请求被路由到具体的Controller方法后,会先通过管道对传入的请求参数进行转换和验证 )

 

7. Exception filters (异常过滤器):

用来处理应用程序中抛出的异常和错误的。

 可以实现:
  1. 统一错误响应格式
  2. 自定义HTTP状态码
  3. 添加额外的响应信息
  4. 记录错误日志

 

 

到了这里,关于NestJS 基础概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • USB的基本概念和基础知识 01

    本文主要介绍USB的基本概念和基础知识 USB USB 中文网 有很多资料, 很实用哦. USB 是通用串行总线 (Universal Serial Bus) 的缩写. 版本 理论最高速度 USB 1.0 Low Speed 1.5Mb/s 或 0.1875MB/s USB 1.0 Full Speed 12Mb/s 或 1.5MB/s USB 1.1 (即 USB 1.0 Full Speed) 12Mb/s 或 1.5MB/s USB 2.0 Full Speed(即USB 1.1) 12Mb/s 或

    2024年02月11日
    浏览(40)
  • 【linux】docker基本概念和基础指令操作(镜像、容器)

    docker 镜像 images xxxx(名称):xxxx(版本号) 每一个image可以生成若干个 容器 (container),所有用相同镜像生成的容器环境完全一样 每一个容器都是一个完全独立的云端服务器

    2024年02月01日
    浏览(52)
  • 3级流水线ARM组织概念

    3级流水线ARM组织如图:  (1)处理器状态的寄存器堆(Register Bank):它有两个读端口和一个写端口,每个端口都可以访问任意寄存器,再加上专门访问程序计数器PC的一个附加读端口和一个附加写端口。 (2)桶形移位寄存器(Barrel Shifter):它可以把一个操作数移位或循环

    2024年02月02日
    浏览(35)
  • Kafka - 深入了解Kafka基础架构:Kafka的基本概念

    我们首先了解一些Kafka的基本概念。 1)Producer :消息生产者,就是向kafka broker发消息的客户端 2)Consumer :消息消费者,向kafka broker获取消息的客户端 3)Consumer Group (CG):消费者组,由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据,一个broker可以有多个

    2024年02月08日
    浏览(37)
  • MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇

    今天来分享一期MySQL的基本用法(增删改查 对库 对表 对值) 目录 MySQL的基础概念  SQL 语言的主要分类 DDL(数据定义语言) DML(数据操控语言) DQL(数据库查询语言) DCL(数据库控制语言) 基础语法 增 库的操作 表操作 列操作 值操作 删 删除库 删除表 删除值 改 修改表名 更新数

    2024年03月16日
    浏览(47)
  • nestjs 基础、使用 passport 来进行鉴权

    Module 模块结构 模块是一个图状引用关系。 模块的实例化有三种模式。默认情况是 singletones 模式,也就是模块可能被引用,但不同的引用处拿的是同一个共享实例,也就是说一个进程有一个唯一的实例被共享。 模块(Module)是 nestjs 的最基础的代码组织结构,Provider 、Contr

    2024年02月13日
    浏览(34)
  • 尚硅谷ES基础 - RESTful & JSON&基本概念&倒排索引&HTTP

    RESTful JSON REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。 Web 应用程序最重要的 REST 原则是,客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在请求

    2024年02月21日
    浏览(34)
  • 【C/C++套接字编程】套接字的基本概念与基础语法

    TCP/UDP实验为牵引,学习套接字编程的相关知识,再进一步深化对TCP/UDP的理解 目录 前言 Socket编程语法 1. 套接字及创建 什么是套接字? 创建套接字 2. 端口绑定 3. 收发信息 与recv()函数的比较: 与send()函数的比较: 编程实例  总结 系列博客 【C/C++套接字编程】TCP协议通信的

    2024年02月09日
    浏览(46)
  • 【音视频原理】图像相关概念 ② ( 帧率 | 常见帧率标准 | 码率 | 码率单位 )

    帧率 Frame Rate , 帧 指的是 是 画面帧 , 帧率 是 画面帧 的 速率 ; 帧率 的 单位是 FPS , Frames Per Second , 是 每秒钟 的 画面帧 个数 ; 帧率 是 动画 / 电影 / 游戏 的 每秒钟 的 画面数 , 用于 测量 视频 的 信息数量 ; 帧率 越高 , 视频 信息数量越多 ; 帧率 与 流畅度 相关 , 帧率越高

    2024年01月20日
    浏览(94)
  • ChatGPT中的Token:了解聊天模型的基本单位

    ✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的个人主页 🏙️ 个人社区,欢迎你的加入:全栈弄潮儿的个人社区 📙 专栏地址:AI大模型 在ChatGPT中,\\\"token\\\"是指对文本输入进行分割和编码的最小单位。在英语中,一个token通常是一个单词或一个标点符号。然而,对于其

    2024年02月15日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包