
Разработай свой мини фреймворк. Роутинг, эндпоинты, работа с файлами, переменные окружения.
Ознакомиться с роликом - https://youtu.be/243pQXC5Ebs?si=6tRBcuM8Rg5c8gJo
Повторить реализацию фреймворка из ролика самостоятельно — не подглядывая.
После завершения — улучшить реализацию:
подумать, какие части можно оптимизировать, сделать код чище и надёжнее.
Для каждого роутера создать отдельный контроллер.
Минимум 3 модуля:
Роутер для работы с файлами
Роутер для работы с пользователями
Роутер для работы с постами
Метод | Путь | Описание |
|---|---|---|
POST |
| Загрузка текстового файла. В ответ вернуть количество слов в файле (использовать функцию из раздела про файловую систему). |
DELETE |
| Удалить файл по имени, переданному в query-параметре. |
GET |
| Вернуть содержимое файла. |
PUT |
| В теле запроса передать объект вида: |
PATCH |
| Аналогично |
Создать облачную базу данных (например, MongoDB Atlas).
Подключить к проекту, как показано в ролике.
{
id: string, // генерируется автоматически
username: string,
email: string,
password: string,
age: number,
posts: array[]
}
Метод | Путь | Описание |
|---|---|---|
POST |
| Создать нового пользователя |
GET |
| Получить всех пользователей |
PUT |
| Обновить данные пользователя |
DELETE |
| Удалить пользователя по |
GET |
| Получить пользователя по |
📘 Пример запроса:
GET /users/35235235
Должен найти пользователя с таким id в БД и вернуть его.
Если пользователь не найден — вернуть соответствующее сообщение.
Научиться добавлять посты пользователям и реализовать CRUD для сущности Post.
{
id: string,
title: string,
body: string,
userId: objectId,
likes: number
}
[POST] /posts — создать пост
[GET] /posts — получить все посты
[GET] /posts/:id — получить пост по id
[GET] /posts/user/:userId — получить все посты конкретного пользователя
[PUT] /posts/:id — обновить пост
[DELETE] /posts/:id — удалить пост
После реализации всех трёх роутеров:
Сделать постраничный вывод (pagination)
Добавить фильтрацию и сортировку
Реализовать дополнительные проверки и обработку ошибок
Посмотреть рекомендованные ролики для продвинутых REST API эндпоинтов
Добавить в package.json два скрипта:
"scripts": {
"start:dev": "NODE_ENV='development' nodemon app.js",
"start:prod": "NODE_ENV='production' node app.js"
}
Если сервер запущен в режиме production:
Проверить переменную окружения:
if (process.env.NODE_ENV === 'production') { ... }
Получить количество ядер процессора (os.cpus()).
Запустить приложение в нескольких процессах с помощью модуля cluster.
Реализовать:
обработку ошибок,
автоматический перезапуск упавших процессов,
логирование событий.
В результате должно получиться полноценное серверное приложение с:
собственным мини-фреймворком,
тремя роутерами (files, users, posts),
подключением к облачной БД,
CRUD-операциями,
пагинацией, фильтрацией, сортировкой,
поддержкой dev/prod окружений и кластеризации.
Дата создания: 7 октября 2025 г.