Pentru a menține o structură previzibilă a răspunsurilor API consumate de frontend, este o practică recomandată ca toate datele să fie împachetate într-o anvelopă comună: { data: [...], statusCode: 200, timestamp: "..." }.
Folosind un TransformInterceptor și operatorul RxJS map(), poți transforma automat rezultatul returnat de orice controller fără a modifica manual codul fiecărui endpoint.
Exemplu: TransformInterceptor pentru împachetare standardizată
import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
export interface StandardResponse {
data: T;
statusCode: number;
timestamp: string;
}
@Injectable()
export class TransformInterceptor implements NestInterceptor> {
intercept(context: ExecutionContext, next: CallHandler): Observable> {
const ctx = context.switchToHttp();
const response = ctx.getResponse();
return next.handle().pipe(
map((data) => ({
data,
statusCode: response.statusCode,
timestamp: new Date().toISOString(),
})),
);
}
}
Întrebări & Exemple de Cod:
TransformInterceptor pentru Răspunsuri UnificateAi o nelămurire despre utilizarea comenzii
TransformInterceptor pentru Răspunsuri Unificatesau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.