Вопросы по Nest.js

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

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

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

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

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

  1. @Controller(): Декоратор, который определяет класс как контроллер.
  2. @Get(), @Post(), @Put(), @Delete(): Декораторы для обработки HTTP методов.
  3. @Param(): Декоратор для извлечения параметров из URL.
  4. @Body(): Декоратор для извлечения тела запроса.
  5. @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);
  }
}
Разбор кода:
  1. Импортируем декораторы: В начале файла мы импортируем нужные декораторы из пакета @nestjs/common.
  2. Создаём класс контроллера: Мы используем декоратор @Controller('users'), чтобы указать, что этот контроллер будет обрабатывать запросы, начинающиеся с /users.
  3. Метод getAllUsers: Используем декоратор @Get(), который указывает, что этот метод будет обрабатывать GET-запросы. Он возвращает всех пользователей из массива users.
  4. Метод createUser: Этот метод использует декоратор @Post(), чтобы обрабатывать POST-запросы на создание нового пользователя. Декоратор @Body() позволяет получить данные из тела запроса.
  5. Метод getUserById: Метод с декоратором @Get(':id'), который позволяет извлекать параметр id из URL и возвращать конкретного пользователя.

Заключение

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

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