1.简介
一般前后端的响应会约定一个模式来方便前端的响应处理,如nest.js出现异常时的模式:
{
"statusCode":400,
"data": null,
"message": "Bad Request"
}
这样前端可以直接判断statusCode来处理响应
但是,controller方法里会直接返回需要的数据,即data部分
如果要在所有controller方法里都包裹上一层statusCode,这样代价又比较大,所以希望有一个统一的切面来转换正常响应数据
在nest.js里可以使用Interceptor来实现这种响应数据转换
2.实现
实现一个ResponseTransformInterceptor拦截器
import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
export interface Response<T> {
statusCode: number;
message: string;
data: T;
}
/**
* G