一、拦截器
拦截器作用:
- 在函数执行之前、之后绑定额外的逻辑
- 转换函数的返回结果
- 转换从函数抛出的异常
- 扩展基本函数的行为
- 根据所选条件重写函数
期望接口返回一个标准的json格式,利用拦截器对数据做全局的格式化
{code: "200",data: [],message: "操作成功!"
}
二、拦截器实现
创建文件 common/response.ts
import { Injectable, NestInterceptor, CallHandler } from "@nestjs/common";
import { Observable } from "rxjs";
import { map } from 'rxjs/operators';interface data<T>{data: T
}@Injectable ()
export class Response<T = any> implements NestInterceptor {intercept(context, next: CallHandler): Observable<data<T>> {return next.handle().pipe(map(data => {return {data,code: '200',message: '操作成功!'}}))}
}
三、main.ts 中注册全局拦截器
import { NestFactory } from '@nestjs/core';
import { NestExpressApplication } from '@nestjs/platform-express/interfaces';
import { Response } from './common/response';
import { AppModule } from './app.module';async function bootstrap() {const app = await NestFactory.create<NestExpressApplication>(AppModule);app.useGlobalInterceptors(new Response())await app.listen(3000);
}
bootstrap();