NestJS Первое приложение за 30 минут

от автора

в
Время чтения: 3 мин.

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 минут.


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Сколько будет 8 + 7?