If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
NestJS में middleware एक important concept है जो HTTP request-response cycle के बीच में custom logic execute करने के काम आता है।
Middleware का use request को handle करने से पहले या response भेजने से पहले कुछ specific tasks को perform करने के लिए किया जाता है। इस topic में हम middleware
का basic concept समझेंगे, कैसे middleware implement किया जाता है।
●●●
Middleware एक function
या class
होता है जो incoming HTTP requests को intercept करता है और response से पहले कुछ operations perform करता है।
यह function controller के methods call hone से पहले execute होता है। आप middleware को use कर सकते हैं logging, validation, authentication, या data transformation जैसे tasks के लिए।
Simpler words में, middleware एक बीच का function है जो request process hone से पहले execute होता है।
Middleware का use काफी अलग-अलग scenarios में किया जा सकता है , कुछ common use cases यह हैं -
Logging : सभी incoming requests को log करना।
Authentication : Request authenticate करने के लिए middleware use किया जाता है।
Validation : Request data को validate करना (e.g., check करना कि headers या body में correct values हैं).
Data Transformation : Request या response data को modify करना।
CORS Handling : Cross-Origin Resource Sharing को handle करना।
आप middleware को multiple purposes के लिए भी customize कर सकते हैं।
●●●
NestJS में middleware define करने के दो main methods हैं -
Functional Middleware : एक simple function जो next()
को call करता है।
Class-Based Middleware : यह एक class होती है जो NestMiddleware
interface implement करती है।
import { Request, Response, NextFunction } from 'express';
export function logger(req: Request, res: Response, next: NextFunction) {
console.log(`Request... ${req.method} ${req.url}`);
next(); // Aage ke request lifecycle ke liye next() ko call karna zaroori hai
}
import { Injectable, NestMiddleware } from '@nestjs/common';
import { Request, Response, NextFunction } from 'express';
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
use(req: Request, res: Response, next: NextFunction) {
console.log(`[Class-Based] Request... ${req.method} ${req.url}`);
next();
}
}
यहां -
use()
method : यह method request process करता है और next()
function को call करता है, जिससे request controller तक पहुंचती है।
next()
function : इसको call करना जरूरी है ताकि request lifecycle में आगे बढ़ सके।
●●●
Middleware को application में register करना काफी important step होता है। NestJS में आप middleware को globally
या route-specific
register कर सकते हैं।
अगर आप middleware को सिर्फ specific routes के लिए apply करना चाहते हैं, तो यह module level पर register होता है।
import { Module, MiddlewareConsumer, RequestMethod } from '@nestjs/common';
import { UserController } from './user.controller';
import { LoggerMiddleware } from './logger.middleware';
@Module({
controllers: [UserController],
})
export class UserModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(LoggerMiddleware) // Middleware apply karte hain
.forRoutes({ path: 'users', method: RequestMethod.GET }); // Specific route ke liye apply
}
}
इस example में -
apply(LoggerMiddleware)
: यह method middleware को register करता है।
forRoutes()
: इस method में specific route (users) और method (GET
) specify करते हैं जिसमे middleware apply होगा।
अगर middleware को आपको application के हर route के लिए apply करना है, तो global
middleware का use होता है।
import { NestModule, MiddlewareConsumer, Module } from '@nestjs/common';
import { LoggerMiddleware } from './logger.middleware';
import { AppController } from './app.controller';
@Module({
controllers: [AppController],
})
export class AppModule implements NestModule {
configure(consumer: MiddlewareConsumer) {
consumer.apply(LoggerMiddleware).forRoutes('*'); // Global apply
}
}
यहां forRoutes('*')
: यह application के सभी routes के लिए middleware को apply करता है।
●●●
Avoid Heavy Logic : Middleware में heavy processing avoid करें, क्योंकि यह directly request-response lifecycle को affect करेगा।
Global Middleware को Thoughtfully Use करें : Global middleware सभी requests के लिए execute होगा, इसलिए ensure करें कि आप सिर्फ वही middleware global बनाएं जो हर request के लिए जरूरी हो।
Error Handling : अगर middleware में कोई exception
throw हो रहा है, तो use NestJS के exception filters या error-handling mechanisms के साथ manage करें।
Logging and Monitoring : Middleware को request logging और monitoring के लिए use करना best practice है। आप middleware के through request time, headers, status codes, etc., को log कर सकते हैं।
●●●
NestJS middleware एक powerful tool है जो request-response
cycle के बीच custom logic execute करने के काम आता है।
Middleware का use request को intercept करने और response भेजने से पहले कुछ important tasks perform करने के लिए किया जाता है, जैसे logging, validation, authentication, etc.
Middleware request को intercept करके custom logic execute करता है।
आप middleware को functional या class-based तरीके से लिख सकते हैं।
Middleware को global या route-specific तरीके से register करना होता है।