Как использовать декораторы в контроллере 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 позволяет создать четкую и структурированную архитектуру приложения. Декораторы делают код более читабельным и упрощают управление маршрутизацией, обработкой запросов и внедрением зависимостей. Убедитесь, что вы тщательно изучаете каждый декоратор и его применение для построения эффективных контроллеров в вашем приложении.