NestJS Decorators : What are decorators in NestJS in Hindi


NestJS decorators एक powerful feature हैं जो आपको code को easily manage, reuse, और customize करने कि facility देते हैं।

Decorators basically metadata को attach करते हैं और classes, methods, properties, या parameters को customize करने के लिए use होते हैं। NestJS में in-built decorators के साथ आप custom decorators भी बना सकते हैं।

इस blog में हम NestJS decorators का concept, इनका use यह सब समझेंगे।

What are Decorators in NestJs ?

Decorators JavaScript का एक design pattern हैं जो classes, methods, properties, या parameters को modify करते हैं या उनमे metadata add करते हैं।

ये @ symbol के साथ declare किये जाते हैं और methods या classes के behavior को extend करने का काम करते हैं।

Simpler terms में -

  • Decorators code के ऊपर एक extra layer हैं जो किसी class, method, या property के behavior को modify करते हैं।

  • यह mainly metadata को attach करने या manipulate करने के लिए use किये जाते हैं।

NestJS Built-in Decorators

NestJS में काफी सारे in-built decorators होते हैं जो different levels पर apply किये जाते हैं : classes, methods, और parameters पर। ये decorators NestJS framework को बताते हैं कि particular method, class, या parameter कैसे behave करेगा।

1. NestJs @Controller Decorator

यह class को एक controller define करता है , यह specify करता है कि इस class का काम HTTP requests को handle करना होगा।

import { Controller } from '@nestjs/common'; @Controller('users') export class UserController { // Controller logic here }

इस example में @Controller('users'), class को /users route के साथ map करता है।

2. NestJs @Get Decorator

यह method को HTTP GET request के साथ bind करता है।

import { Get } from '@nestjs/common'; @Controller('users') export class UserController { @Get() findAll() { return 'Returning all users!'; } }

3. NestJs @Post Decorator

यह method को HTTP POST request के साथ bind करता है।

import { Post } from '@nestjs/common'; @Controller('users') export class UserController { @Post() create() { return 'Creating a new user!'; } }

4. NestJs @Param Decorator

यह decorator HTTP route parameters को method parameters के साथ bind करता है।

For example, अगर आप id को URL से extract करना चाहते हैं तो @Param() का use होता है।

import { Param } from '@nestjs/common'; @Controller('users') export class UserController { @Get(':id') findOne(@Param('id') id: string) { return `User with id: ${id}`; } }

5. NestJs @Body Decorator

यह decorator HTTP request body को method parameter के साथ bind करता है।

import { Body, Post } from '@nestjs/common'; @Controller('users') export class UserController { @Post() create(@Body() createUserDto) { return `User created: ${createUserDto}`; } }

यहां @Body() decorator request body को createUserDto parameter में inject करता है।

Commonly Used Decorators In NestJS

NestJS में काफी commonly used decorators होते हैं जो आपको request lifecycle को easily manage करने में help करते हैं।

कुछ commonly used decorators यह हैं -

  • @Query( ): HTTP query parameters को extract करता है।

  • @Headers() : HTTP headers को method के parameter के साथ map करता है।

  • @Req() : Complete HTTP request को method में inject करता है।

  • @Res() : Complete HTTP response को method में inject करता है।

NestJs @Query decorator example

import { Query, Get } from '@nestjs/common'; @Controller('users') export class UserController { @Get() findAll(@Query('name') name: string) { return `Searching for user with name: ${name}`; } }

यहां @Query('name') decorator , query parameter name को extract करता है।

Conclusion

NestJS decorators आपको application के different aspects को modular और reusable बनाने में help करते हैं , यह powerful feature है जो code को clean, maintainable, और easy-तो-read बनाता है।

जहाँ possible हो, NestJS के built-in decorators का use करें । Custom decorators सिर्फ तब बनाएं जब आपको complex या custom logic चाहिए।

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