Пошук уроків, статей та іншого контенту
Створите NestJS-застосунок, запустите його в режимах розробки та перевірите перший HTTP-ендпоїнт.
NestJS — фреймворк для створення серверних застосунків на Node.js. Він використовує TypeScript і допомагає організувати код за допомогою модулів, контролерів та сервісів.
У цьому уроці ми:
створимо новий NestJS-проєкт;
запустимо його в режимі розробки;
змінимо перший контролер;
перевіримо HTTP-ендпоїнт у браузері або через curl.
Для роботи потрібні:
встановлений Node.js;
npm, який встановлюється разом із Node.js;
термінал.
Перевірити встановлені версії можна командами:
node --version
npm --versionЯкщо команди повертають номери версій, середовище готове до роботи.
NestJS CLI — це командний інструмент для створення проєктів і генерації файлів NestJS.
Встановіть його глобально:
npm install --global @nestjs/cliПеревірте, що CLI доступний:
nest --versionКоманда має вивести версію NestJS CLI.
Виконайте команду:
nest new first-nest-appCLI поставить кілька запитань. Зазвичай потрібно вибрати:
менеджер пакетів, наприклад npm;
інші параметри залишити зі значеннями за замовчуванням.
Після завершення команди перейдіть до директорії проєкту:
cd first-nest-appВстановлені залежності та базова структура вже будуть створені автоматично.
У створеному проєкті будуть, зокрема, такі файли:
first-nest-app/
├── src/
│ ├── app.controller.ts
│ ├── app.module.ts
│ ├── app.service.ts
│ └── main.ts
├── package.json
└── tsconfig.jsonОсновні файли:
main.ts — точка входу застосунку;
app.module.ts — кореневий модуль;
app.controller.ts — контролер із HTTP-маршрутами;
app.service.ts — сервіс із бізнес-логікою;
package.json — залежності та npm-скрипти проєкту.
Файл src/main.ts запускає NestJS-застосунок:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(process.env.PORT ?? 3000);
}
bootstrap();Застосунок слухає порт 3000, якщо змінна середовища PORT не задана іншим значенням.
Запустіть застосунок командою:
npm run start:devЦей режим зручний під час розробки: NestJS стежить за змінами у файлах і перезапускає застосунок після їх збереження.
У терміналі з’явиться повідомлення про успішний запуск. Після цього сервер буде доступний за адресою:
http://localhost:3000Не закривайте термінал, поки працюєте із застосунком.
Відкрийте в браузері адресу:
http://localhost:3000У відповідь ви побачите:
Hello World!Також ендпоїнт можна перевірити з термінала:
curl http://localhost:3000HTTP-метод цього запиту — GET, а шлях — /.
Початковий файл src/app.controller.ts має приблизно такий вигляд:
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}Розглянемо основні частини:
@Controller() позначає клас як контролер;
@Get() пов’язує метод із GET-запитом;
getHello() — метод, який виконується після запиту;
return визначає відповідь сервера.
Порожній аргумент у @Controller() означає, що контролер працює з кореневим шляхом /.
Змініть файл src/app.controller.ts так:
import { Controller, Get } from '@nestjs/common';
@Controller()
export class AppController {
@Get()
getHello(): string {
return 'Мій перший NestJS-ендпоїнт';
}
}Тепер контролер не використовує AppService, тому імпорт сервісу та конструктор більше не потрібні.
Збережіть файл і знову виконайте запит:
curl http://localhost:3000Очікувана відповідь:
Мій перший NestJS-ендпоїнтЯкщо ви відкрили застосунок у браузері, оновіть сторінку. Режим start:dev автоматично підхопить зміни.
Для звичайного запуску використовується команда:
npm run startВона запускає проєкт без автоматичного перезапуску після змін.
Під час активної розробки зазвичай використовують:
npm run start:devЩоб зупинити сервер, натисніть Ctrl + C у терміналі.
Коли клієнт виконує:
GET http://localhost:3000/NestJS:
отримує HTTP-запит;
знаходить контролер із декоратором @Controller();
знаходить метод із декоратором @Get();
викликає цей метод;
повертає його результат клієнту.
У нашому прикладі результатом є рядок:
Мій перший NestJS-ендпоїнтnest не знайденаЯкщо термінал повідомляє, що команда nest не існує, встановіть CLI:
npm install --global @nestjs/cliПісля цього перевірте:
nest --versionЯкщо порт 3000 уже використовується іншим процесом, NestJS не зможе запустити сервер на ньому.
Зупиніть інший застосунок або запустіть NestJS на іншому порту:
PORT=3001 npm run start:devУ Windows PowerShell:
$env:PORT=3001; npm run start:devПісля цього відкрийте:
http://localhost:3001Якщо контролер має декоратори:
@Controller()
@Get()ендпоїнт доступний за адресою:
http://localhost:3000/Не додавайте назву файлу або класу до URL — вони не визначають шлях автоматично.
Переконайтеся, що:
файл збережено;
сервер запущено через npm run start:dev;
відкривається правильний порт;
у терміналі немає помилок компіляції.
У цьому уроці ви:
встановили NestJS CLI;
створили проєкт командою nest new;
запустили застосунок у режимі розробки;
розглянули точку входу та перший контролер;
перевірили GET-ендпоїнт за адресою /;
змінили текст HTTP-відповіді.
Базовий цикл роботи з NestJS виглядає так:
nest new project-name
cd project-name
npm run start:dev