响应拦截器
import {CallHandler, ExecutionContext, Injectable, NestInterceptor} from "@nestjs/common";
import {Observable} from "rxjs";
import {map} from 'rxjs/operators'
@Injectable()
export class Response1<T> implements NestInterceptor{
intercept(context: ExecutionContext, next: CallHandler<any>): Observable<any> | Promise<Observable<any>> {
return next.handle().pipe(map(data=>{
return {
data,
status:0,
message:"ok",
success:true
}
}))
}
}
import {NestFactory} from '@nestjs/core';
import {AppModule} from './app.module';
import {NestExpressApplication} from '@nestjs/platform-express'
import {Response1} from './common/response'
async function bootstrap() {
const app = await NestFactory.create<NestExpressApplication(AppModule);
app.useGlobalInterceptors(new Response1())
await app.listen(3000);
}
bootstrap();
异常拦截器
import {ArgumentsHost, Catch, ExceptionFilter, HttpException} from "@nestjs/common";
import {Request, Response} from "express";
@Catch(HttpException)
export class HttpFilter implements ExceptionFilter{
catch(exception: any, host: ArgumentsHost): any {
const ctx=host.switchToHttp()
const request=ctx.getRequest<Request>()
const response=ctx.getResponse<Response>()
const status=exception.getState()
response.status(status).json({
success:false,
time:new Date(),
data:exception.message,
status,
path:request.url
})
}
}
import {NestFactory} from '@nestjs/core';
import {AppModule} from './app.module';
import {NestExpressApplication} from '@nestjs/platform-express'
MiddleWareAll(req:Request,res:Response,next:NextFunction){
import {Response1} from './common/response'
import {HttpFilter} from './common/filter'
async function bootstrap() {
const app = await NestFactory.create<NestExpressApplication>(AppModule);
app.useGlobalFilters(new HttpFilter())
app.useGlobalInterceptors(new Response1())
await app.listen(3000);
}
bootstrap();