nestjs概述
设计理念
灵感来源于Angular
基本概念
- Controllers handling incoming requests and returning responses to the client 配合services处理数据,主要处理数据在services, Controller负责路由接口 使用:Decorators、 classes @Controller([path])
- Providers
- Modules
- Middleware
- Exception Filters
- Pipes
- Guards
- interceptors
- Custom Decorators
脚本快速生成物料模板
nest g module [name]
nest g controller [name]
nest g service [name]
nest g resource [name] # CRUD controller
passport
虽然仅使用@nestjs/jwt就能实现身份验证的功能,但是使用passport能在更高层次上提供更多便利。Passport 拥有丰富的 strategies 生态系统,实现了各种身份验证机制。虽然概念简单,但你可以选择的 Passport 策略集非常丰富且种类繁多。Passport 将这些不同的步骤抽象为一个标准模式,@nestjs/passport 模块将这个模式封装并标准化为熟悉的 Nest 结构
NestJs中何时使用卫士以及何时使用中间件 在NestJs中,卫士(Guards)和中间件(Middleware)是用于处理请求的两种不同的机制。
卫士是一种用于对请求进行验证和授权的机制。它可以用于保护路由、控制器或者特定的处理程序。卫士通常用于验证用户的身份、权限和角色等信息。当请求到达时,卫士会在路由处理程序之前执行,并根据验证结果决定是否允许继续处理请求。如果验证失败,卫士可以返回错误响应或者重定向到其他页面。在NestJs中,可以通过实现CanActivate接口来创建自定义的卫士。
中间件是一种用于在请求到达路由处理程序之前或之后执行一些通用逻辑的机制。它可以用于处理请求的前置或后置操作,例如日志记录、错误处理、请求转发等。中间件可以在请求到达路由处理程序之前对请求进行修改或者在路由处理程序之后对响应进行修改。在NestJs中,可以通过使用@Middleware()装饰器来创建自定义的中间件。
那么何时使用卫士,何时使用中间件呢?
使用卫士: 当需要对请求进行验证和授权时,例如验证用户的身份、权限和角色等信息。 当需要在路由处理程序之前进行验证和授权操作时。 当需要根据验证结果决定是否允许继续处理请求时。 使用中间件: 当需要在请求到达路由处理程序之前或之后执行一些通用逻辑时,例如日志记录、错误处理、请求转发等。 当需要对请求进行修改或者对响应进行修改时。 当需要在多个路由之间共享一些通用逻辑时。