Поиск по сайту
Ctrl + K
Вопросы по Nest.js

Как использовать декораторы в контроллере NestJS?

NestJS — это фреймворк для создания серверных приложений на Node.js, который обеспечивает мощную архитектуру для построения масштабируемых приложений. Один из ключевых элементов NestJS — это декораторы, которые позволяют нам описывать поведение классов и их методов. В этом ответе мы разберем, как использовать декораторы в контроллере NestJS на примере простейшего приложения.

Что такое декораторы?

Декораторы в TypeScript — это специальные функции, которые позволяют добавлять метаданные к классам, методам и свойствам. В NestJS декораторы используются для установки маршрутов, обработки запросов и внедрения зависимостей.

Основные декораторы для контроллеров в NestJS

  • @Controller(): Декоратор, который определяет класс как контроллер.
  • @Get(), @Post(), @Put(), @Delete(): Декораторы для обработки HTTP методов.
  • @Param(): Декоратор для извлечения параметров из URL.
  • @Body(): Декоратор для извлечения тела запроса.
  • @Query(): Декоратор для извлечения параметров из строки запроса.
  • Пример использования декораторов в контроллере

    Давайте создадим простой контроллер, который будет управлять записями "пользователь".

    import { Controller, Get, Post, Body, Param } from '@nestjs/common';
    
    @Controller('users')
    export class UsersController {
      private users = []; // Наш «база данных» пользователей для примера
    
      @Get()
      getAllUsers() {
        return this.users;
      }
    
      @Post()
      createUser(@Body() createUserDto: { name: string; age: number }) {
        const newUser = {
          id: this.users.length + 1,
          ...createUserDto,
        };
        this.users.push(newUser);
        return newUser;
      }
    
      @Get(':id')
      getUserById(@Param('id') id: number) {
        return this.users.find(user => user.id === id);
      }
    }
    
    Разбор кода:
  • Импортируем декораторы: В начале файла мы импортируем нужные декораторы из пакета @nestjs/common.
  • Создаём класс контроллера: Мы используем декоратор @Controller('users'), чтобы указать, что этот контроллер будет обрабатывать запросы, начинающиеся с /users.
  • Метод getAllUsers: Используем декоратор @Get(), который указывает, что этот метод будет обрабатывать GET-запросы. Он возвращает всех пользователей из массива users.
  • Метод createUser: Этот метод использует декоратор @Post(), чтобы обрабатывать POST-запросы на создание нового пользователя. Декоратор @Body() позволяет получить данные из тела запроса.
  • Метод getUserById: Метод с декоратором @Get(':id'), который позволяет извлекать параметр id из URL и возвращать конкретного пользователя.
  • Заключение

    Использование декораторов в NestJS позволяет создать четкую и структурированную архитектуру приложения. Декораторы делают код более читабельным и упрощают управление маршрутизацией, обработкой запросов и внедрением зависимостей. Убедитесь, что вы тщательно изучаете каждый декоратор и его применение для построения эффективных контроллеров в вашем приложении.

    Содержание:
    Редактировать