在src目录下新建interceptor文件夹,并在文件夹中新建response.interceptor.ts文件,代码:
import {Injectable, NestInterceptor, CallHandler, ExecutionContext} from '@nestjs/common'
import {map} from 'rxjs/operators'
import {Observable} from 'rxjs'
interface Response<T> {
data: T
}
@Injectable()
export class ResponseInterceptor<T> implements NestInterceptor<T, Response<T>> {
intercept(context: ExecutionContext, next: CallHandler<T>):Observable<Response<T>> {
return next.handle().pipe(map(data=> {
return {
data,
code: 0,
message: '请求成功'
}
}))
}
}
项目src目录的main.js代码:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ResponseInterceptor } from './interceptor/response.interceptor';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalInterceptors(new ResponseInterceptor()) // 添加拦截器
await app.listen(5200);
}
bootstrap();