Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • NestJS Documentation21টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Installation
  • Modules
  • Controllers
  • Providers & DI
  • Pipes
  • Guards
  • Interceptors
  • Exception Handling
  • Middleware
  • Database
  • Authentication
  • Config & Env
  • File Upload
  • WebSockets
  • Microservices
  • Swagger
  • Testing
  • Best Practices
  • Project
  • Interview
  1. Docs
  2. NestJS
  3. NestJS Interceptors
NestJSAdvanced

NestJS Interceptors

@NestInterceptor, logging, transform, caching — request/response-এর মাঝে logic বাংলায়।

10টি অংশবাংলা ভাষায়

Interceptor request/response-এর মাঝে custom logic চালায় — logging, transform, caching, timeout ইত্যাদি। এটি Observable (RxJS) ব্যবহার করে।

Logging Interceptor

src/common/logging.interceptor.tstypescript
typescript
import {
  CallHandler,
  ExecutionContext,
  Injectable,
  NestInterceptor,
} from "@nestjs/common";
import { Observable } from "rxjs";
import { tap } from "rxjs/operators";

@Injectable()
export class LoggingInterceptor implements NestInterceptor {
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    const request = context.switchToHttp().getRequest();
    const start = Date.now();

    console.log("➡️", request.method, request.url);

    return next.handle().pipe(
      tap(() =>
        console.log("⬅️", request.method, request.url, Date.now() - start + "ms"),
      ),
    );
  }
}

Response Transform

src/common/transform.interceptor.tstypescript
typescript
import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from "@nestjs/common";
import { Observable } from "rxjs";
import { map } from "rxjs/operators";

export interface Response<T> {
  success: boolean;
  data: T;
}

@Injectable()
export class TransformInterceptor<T> implements NestInterceptor<T, Response<T>> {
  intercept(context: ExecutionContext, next: CallHandler): Observable<Response<T>> {
    return next.handle().pipe(
      map((data) => ({
        success: true,
        data,
      })),
    );
  }
}

// সব response:
// { success: true, data: ... }

Timeout Interceptor

import { Injectable, NestInterceptor, RequestTimeoutException } from "@nestjs/common";
import { Observable, TimeoutError, throwError } from "rxjs";
import { catchError, timeout } from "rxjs/operators";

@Injectable()
export class TimeoutInterceptor implements NestInterceptor {
  intercept(context, next): Observable<any> {
    return next.handle().pipe(
      timeout(10000), // 10s পর request timeout
      catchError((err) => {
        if (err instanceof TimeoutError) {
          return throwError(() => new RequestTimeoutException());
        }
        return throwError(() => err);
      }),
    );
  }
}

Apply Interceptor

import { UseInterceptors, Post, Controller } from "@nestjs/common";
import { LoggingInterceptor } from "../common/logging.interceptor";

// controller-লেভেল
@UseInterceptors(LoggingInterceptor)
@Controller("users")
export class UsersController {}

// method-লেভেল
@Post()
@UseInterceptors(new LoggingInterceptor())
create() {}

// global
app.useGlobalInterceptors(new TransformInterceptor());
Order of execution

Guard → Interceptor (before) → Pipe → Controller → Interceptor (after/transform)। তাই logging interceptor সবচেয়ে early দেখতে পারেন।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরNestJS Guards & AuthorizationপরেরNestJS Exception Handling
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com