主题
使用拦截器格式化响应数据
创建拦截器文件commom/interceptors/response.interceptor.ts
response.interceptor.ts
ts
import {
Injectable,
NestInterceptor,
ExecutionContext,
CallHandler,
} from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
export interface ResponseFormat<T = any> {
code: number;
message: string;
data?: T;
}
@Injectable()
export class ResponseInterceptor<T>
implements NestInterceptor<T, ResponseFormat<T>>
{
intercept(
context: ExecutionContext,
next: CallHandler,
): Observable<ResponseFormat<T>> {
return next.handle().pipe(
map((data): ResponseFormat<T> => {
return {
code: 200,
message: 'success',
data: data as T,
};
}),
);
}
}main.ts
ts
import { ResponseInterceptor } from './common/interceptor/response.interceptor';
// 全局响应拦截器
app.useGlobalInterceptors(new ResponseInterceptor());
