重要知识点提取
- 每个模块都是一个共享模块,
exports
数组中的实例可以在模块之间共享。 - 模块可以导出他们的内部提供者。 而且,他们可以再导出自己导入的模块。
- 模块类不能注入到提供者中,但提供者可以注入到模块
- 当前模块中的使用者controller需要用到提供者的时候,才需要在provider中添加实例,否则不需要
中间件、守卫、管道、异常过滤器、拦截器区别
时机 | 作用 | |
middleware | 在路由处理程序之前调用 | 对请求和响应对象进行更改。 |
pipe | 调用controller方法之前插入 | 转换:将输入数据转换为所需的数据输出 验证:对输入数据进行验证,如果验证成功继续传递; 验证失败则抛出异常; |
guard | 在每个中间件之后执行,但在任何拦截器或管道之前执行。 | 在请求/响应周期的正确位置以声明的方式进行插入处理逻辑 |
interceptor | 在函数执行之前或之后 | 1、转换从函数返回的结果 2、转换从函数抛出的异常 3、扩展基本函数行为 4、根据所选条件完全重写函数 (例如缓存) |