来说说nestjs

作为Nodejs 框架来说,我比较喜欢nestjs

典型的MVC框架

下面梳理一些基本概念

控制器,模块,视图就不用说了,

providers:提供者,用来提供可注入的实例或值的东西,包括服务、工厂函数、或其他可注入的内容。其使用@Injectable() 装饰器定义一个可注入的提供者(服务),其主要作用是创建、管理或提供某些可重用的实例,它们可以在整个应用程序中注入到其他组件(比如控制器或其他服务)中。这与export不同,export 主要用于指定哪些模块内容应该被其他模块导入,provider 定义了模块中的可注入的实例或值。导出模块的提供者意味着其他模块可以注入这些提供者..总的来说,provider 是定义服务和其他可注入实例的地方,而 export 是用于将这些定义的内容暴露给其他模块。

middleware:中间件是在路由处理程序之前调用的函数。是一种可以在 HTTP 请求处理管道中插入逻辑的方式。它允许您在请求到达控制器之前或之后执行一些逻辑。

其作用可用于:

  1. 日志记录: 可以使用中间件记录请求的详细信息,例如请求方法、URL、响应状态等。这有助于调试和监控应用程序的行为。

  2. 身份验证: 中间件可以执行身份验证逻辑,例如检查请求中的令牌或验证用户的权限,以确保请求是合法的。

  3. 数据转换: 中间件可以用于在请求到达控制器之前或响应发送给客户端之前对数据进行转换。例如,解析请求体中的 JSON 数据。

  4. 异常处理: 中间件可以捕获异常并执行相应的处理逻辑。这对于全局错误处理和日志记录非常有用。

  5. 性能监控: 中间件可以用于监控请求的执行时间,记录性能指标,并执行其他与性能相关的操作。

exception filters:Nest 带有一个内置的异常层,负责处理应用程序中所有未处理的异常。当应用程序代码未处理异常时,该层会捕获异常,然后自动发送适当的用户友好响应。

Nest 提供了一组继承自 base 的标准异常HttpException。这些是从@nestjs/common包中公开的,代表许多最常见的 HTTP 异常:

  • BadRequestException
  • UnauthorizedException
  • NotFoundException
  • ForbiddenException
  • NotAcceptableException
  • RequestTimeoutException
  • ConflictException
  • GoneException
  • HttpVersionNotSupportedException
  • PayloadTooLargeException
  • UnsupportedMediaTypeException
  • UnprocessableEntityException
  • InternalServerErrorException
  • NotImplementedException
  • ImATeapotException
  • MethodNotAllowedException
  • BadGatewayException
  • ServiceUnavailableException
  • GatewayTimeoutException
  • PreconditionFailedException

pipes:管道是用@Injectable()装饰器注释的类。管道应该实现该PipeTransform接口。

管道有两个典型用例:

  • 转换:将输入数据转换为所需的形式(例如,从字符串到整数)
  • 验证:评估输入数据,如果有效,则简单地通过不变;否则,当数据不正确时抛出异常

Nest 配备了六种开箱即用的管道:

  • ValidationPipe
  • ParseIntPipe
  • ParseBoolPipe
  • ParseArrayPipe
  • ParseUUIDPipe
  • DefaultValuePipe

它们是从@nestjs/common包中导出的。

如果么有特殊要求,基本使用时候定义dto文件就可以了,

guards:guards用@Injectable()装饰器注释的类,警卫的职责单一。它们根据运行时存在的某些条件(如权限、角色、ACL 等)确定路由处理程序是否处理给定的请求。Guards 在每个中间件之后、任何拦截器或管道之前执行。所以它不像中间件一样不知道调用该函数后将执行哪个处理next()程序。

interceptors:拦截器是用装饰器注释的类@Injectable()。

拦截器具有一组有用的功能,这些功能受到面向切面编程(AOP) 技术的启发。它们使以下成为可能:

  • 在方法执行之前/之后绑定额外的逻辑
  • 转换函数返回的结果
  • 转换函数抛出的异常
  • 扩展基本功能行为
  • 根据特定条件完全覆盖函数(例如,出于缓存目的)

拦截器与中间件的主要区别之一就在于拦截器不只能路由执行之前,也能在执行之后添加逻辑。例如规范所有接口返回的格式;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值