NestJS — это мощный фреймворк для создания серверных приложений на Node.js, вдохновленный Angular. Он использует TypeScript, поддерживает модульную архитектуру и предоставляет удобные инструменты для быстрой разработки API.
В этой статье мы создадим простое REST API на NestJS всего за 30 минут!
1. Установка NestJS
Для начала убедитесь, что у вас установлены:
- Node.js
- npm или yarn
Установите NestJS CLI глобально:
npm install -g @nestjs/cli
Создадим новый проект:
nest new my-first-app
Перейдем в папку проекта и запустим сервер:
cd my-first-app
npm run start:dev
Сервер будет доступен на http://localhost:3000
.
2. Структура проекта
После создания проекта вы увидите такую структуру:
src/
├── app.controller.ts # Контроллер (обработчик маршрутов)
├── app.module.ts # Главный модуль приложения
├── app.service.ts # Сервис (бизнес-логика)
└── main.ts # Точка входа
3. Создадим простой REST API
3.1. Генерация контроллера
Контроллеры обрабатывают HTTP-запросы. Создадим новый контроллер для работы с задачами (tasks):
nest generate controller tasks
В файле src/tasks/tasks.controller.ts
добавим несколько маршрутов:
import { Controller, Get, Post, Body } from '@nestjs/common';
@Controller('tasks') // Базовый путь: /tasks
export class TasksController {
private tasks = []; // Временное хранилище задач
@Get() // GET /tasks
getAllTasks() {
return this.tasks;
}
@Post() // POST /tasks
createTask(@Body() task: { title: string }) {
this.tasks.push(task);
return task;
}
}
3.2. Регистрация контроллера в модуле
Откроем src/tasks/tasks.module.ts
(если его нет, создадим) и добавим контроллер:
import { Module } from '@nestjs/common';
import { TasksController } from './tasks.controller';
@Module({
controllers: [TasksController],
})
export class TasksModule {}
Теперь импортируем TasksModule
в главный модуль (app.module.ts
):
import { Module } from '@nestjs/common';
import { TasksModule } from './tasks/tasks.module';
@Module({
imports: [TasksModule],
})
export class AppModule {}
4. Тестируем API
Запустим сервер (если еще не запущен):
npm run start:dev
GET /tasks
Отправьте GET-запрос:
curl http://localhost:3000/tasks
Ответ: []
(пока нет задач).
POST /tasks
Создадим новую задачу:
curl -X POST -H "Content-Type: application/json" -d '{"title":"Learn NestJS"}' http://localhost:3000/tasks
Ответ: {"title":"Learn NestJS"}
Теперь снова запросим список задач:
curl http://localhost:3000/tasks
Ответ: [{"title":"Learn NestJS"}]
5. Добавим сервис (бизнес-логику)
Сервисы отвечают за работу с данными. Создадим TasksService
:
nest generate service tasks
В src/tasks/tasks.service.ts
добавим логику:
import { Injectable } from '@nestjs/common';
@Injectable()
export class TasksService {
private tasks = [];
getAllTasks() {
return this.tasks;
}
createTask(task: { title: string }) {
this.tasks.push(task);
return task;
}
}
Теперь обновим контроллер (tasks.controller.ts
):
import { Controller, Get, Post, Body } from '@nestjs/common';
import { TasksService } from './tasks.service';
@Controller('tasks')
export class TasksController {
constructor(private readonly tasksService: TasksService) {}
@Get()
getAllTasks() {
return this.tasksService.getAllTasks();
}
@Post()
createTask(@Body() task: { title: string }) {
return this.tasksService.createTask(task);
}
}
Не забудем добавить TasksService
в TasksModule
:
import { Module } from '@nestjs/common';
import { TasksController } from './tasks.controller';
import { TasksService } from './tasks.service';
@Module({
controllers: [TasksController],
providers: [TasksService],
})
export class TasksModule {}
6. Итог
Мы создали простое REST API на NestJS с:
✅ Контроллерами (обработка запросов)
✅ Сервисами (бизнес-логика)
✅ Модулями (организация кода)
Что дальше?
- Добавить базу данных (TypeORM, Prisma)
- Реализовать аутентификацию (JWT, Passport)
- Написать тесты (Jest)
Готово! 🚀 Теперь вы знаете, как создать простое API на NestJS за 30 минут.
Добавить комментарий