पाठ 4 / 34

Controllers और Routing

@Controller और @Get, @Post जैसे route decorators से HTTP requests संभालें, और params व queries पढ़ें।

एक basic controller

@Controller एक क्लास को controller के रूप में चिह्नित करता है; @Get(), @Post(), आदि handler methods को decorate करते हैं।

import { Controller, Get, Post, Body } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('users')
export class UsersController {
  constructor(private usersService: UsersService) {}

  @Get()
  findAll() {
    return this.usersService.findAll();
  }

  @Post()
  create(@Body() createUserDto: CreateUserDto) {
    return this.usersService.create(createUserDto);
  }
}

Route params और query

URL segments के लिए @Param() उपयोग करें, query strings के लिए @Query()।

@Get(':id')
findOne(@Param('id') id: string) {
  return this.usersService.findOne(id);
}

@Get()
findAll(@Query('limit') limit: number = 10) {
  return this.usersService.findAll(limit);
}

HTTP verb decorators

@Get, @Post, @Put, @Delete, @Patch HTTP methods से map होते हैं; path argument controller के base path के relative होता है।

controllers को पतला रखें

controller को सिर्फ़ request पढ़नी चाहिए और service को call करना चाहिए। controller के अंदर की business rules CLI या queue worker में reuse नहीं हो सकतीं, पर service की हो सकती हैं।