# Controllers और Routing — नेस्टजेएस

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

> Decorated methods से HTTP requests को संभालें।

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