NestJS Middleware : Create Middleware In NestJS In Hindi

📔 : NestJS Tutorials 🔗

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 किया जाता है।

What is Middleware?

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 होता है।

Role of Middleware In NestJS

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 Define Middleware

NestJS में middleware define करने के दो main methods हैं -

  1. Functional Middleware : एक simple function जो next() को call करता है।

  2. Class-Based Middleware : यह एक class होती है जो NestMiddleware interface implement करती है।

NestJS functional middleware example

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 }

NestJS class middleware example

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 में आगे बढ़ सके।

NestJS Register Middleware

Middleware को application में register करना काफी important step होता है। NestJS में आप middleware को globally या route-specific register कर सकते हैं।

1. NestJS Route-Specific Middleware

अगर आप 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 होगा।

2. NestJS Global Middleware

अगर 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 करता है।

NestJs Middleware Best Practices

  • 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 कर सकते हैं।

Conclusion

NestJS middleware एक powerful tool है जो request-response cycle के बीच custom logic execute करने के काम आता है।

Middleware का use request को intercept करने और response भेजने से पहले कुछ important tasks perform करने के लिए किया जाता है, जैसे logging, validation, authentication, etc.

Key Points
  • Middleware request को intercept करके custom logic execute करता है।

  • आप middleware को functional या class-based तरीके से लिख सकते हैं।

  • Middleware को global या route-specific तरीके से register करना होता है।


Hey ! I'm Rahul founder of learnhindituts.com. Working in IT industry more than 4.5 years. I love to talk about programming as well as writing technical tutorials and blogs that can help to others .... keep learning :)

Get connected with me - LinkedIn Twitter Instagram Facebook