# Controllers और Routing — NestJS: Scalable Node.js APIs बनाना

Source: https://www.skillbyai.com/hi/nestjs/nestjs-controllers

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

## एक basic controller

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

```typescript
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()`।

```typescript
@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 की हो सकती हैं।
