Lesson 13 / 33
Interceptors
Add cross-cutting concerns: logging, response transformation, error handling.
Write an interceptor
Interceptors wrap request/response using NestInterceptor and Observable streams.
import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
@Injectable()
export class TransformInterceptor implements NestInterceptor {
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
return next.handle().pipe(
map(data => ({ data, timestamp: new Date() }))
);
}
}Apply interceptors
Use @UseInterceptors() on methods, classes, or globally.
@UseInterceptors(TransformInterceptor)
@Get()
findAll() {
return [{ id: 1, name: 'Ada' }];
}
// output: { data: [...], timestamp: Date }