7 рабочих промтов для Node.js и Express: API, middleware и авторизация
Node.js и Express остаются одним из самых популярных стеков для создания серверных приложений. По данным опроса Stack Overflow 2025 года, Node.js используют более 47% профессиональных разработчиков, а Express — бесспорный лидер среди веб-фреймворков для этой платформы. Однако даже опытные программисты часто тратят часы на написание однотипного кода: маршрутов, middleware, обработчиков ошибок. В этой статье я собрал 7 конкретных промтов, которые помогут ускорить разработку в 3-5 раз. Все промты проверены на ChatGPT и Claude, работают на июль 2026 года.
Почему промты для Node.js — это не просто «напиши код»
Промт-инжиниринг для программирования отличается от обычных запросов. Если вы просто напишете «сделай REST API на Express», нейросеть выдаст базовый пример без обработки ошибок, валидации и безопасности. Чтобы получить production-ready код, нужно указывать конкретные требования: архитектуру, используемые библиотеки, версии Node.js, паттерны проектирования. Именно такие промты я и подготовил.
Промт №1: Базовый REST API с CRUD-операциями
Для чего: Быстрое создание каркаса REST API для любой сущности (пользователи, товары, статьи).
Создай REST API на Express.js для управления коллекцией [сущность: пользователи]. Используй:
- Node.js 20+
- Express 4.18+
- PostgreSQL через библиотеку pg (без ORM)
- Валидацию через Joi
- Обработку ошибок через middleware
Методы:
- GET /users — список с пагинацией (page, limit query params)
- GET /users/:id — один пользователь
- POST /users — создание (email, name, age — обязательные поля)
- PUT /users/:id — обновление (частичное, через PATCH)
- DELETE /users/:id — удаление (soft delete с полем deleted_at)
Добавь middleware для:
- Логирования запросов (метод, url, время)
- CORS (разрешить все origins)
- Обработки 404
Выведи весь код в одном файле index.js с комментариями.
Пример использования: Замените [сущность: пользователи] на [сущность: товары] и получите готовый API для интернет-магазина. Промт экономит 30-40 минут ручного написания бойлерплейта.
Промт №2: Middleware для аутентификации через JWT
Для чего: Защита маршрутов с помощью JSON Web Token (JWT) — стандарт безопасности для современных API.
Напиши middleware для Express.js, который проверяет JWT-токен в заголовке Authorization (Bearer token). Требования:
- Используй библиотеку jsonwebtoken
- Проверяй срок действия токена (exp claim)
- Если токен невалиден — возвращай 401 с JSON-ошибкой {error: 'Unauthorized', message: '...'}
- Если токен валиден — добавляй decoded payload в req.user
- Экспортируй middleware как функцию authenticate
- Дополнительно: напиши middleware для проверки роли (admin/user) — authorize('admin')
- Добавь пример использования в маршрутах
Выведи код с комментариями на русском языке.
Пример использования: Этот промт даёт готовый код для защиты маршрутов в админке. Просто подключите authenticate к нужным роутам: router.get('/admin', authenticate, authorize('admin'), handler).
Промт №3: Rate Limiting и защита от DDoS
Для чего: Ограничение количества запросов к API для предотвращения перегрузки и атак.
Реализуй rate limiting для Express-приложения с помощью express-rate-limit. Требования:
- Глобальный лимит: 100 запросов за 15 минут на IP
- Для /api/auth (логин/регистрация) — 5 запросов за 15 минут
- Для /api/webhook — без лимита
- При превышении возвращай 429 Too Many Requests с JSON-ошибкой
- Добавь заголовки X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After
- Используй in-memory хранилище (по умолчанию)
Выведи полный код настройки приложения с комментариями.
Пример использования: Примените для продакшен-сервера. Лимит на логин предотвращает брутфорс, а вебхуки остаются доступными для внешних сервисов.
Промт №4: WebSocket-сервер с Socket.IO и авторизацией
Для чего: Добавление real-time функциональности (чат, уведомления, live-обновления).
Создай WebSocket-сервер на Socket.IO, интегрированный с Express. Требования:
- Аутентификация через JWT при подключении (передавай токен в handshake query)
- Мидлвар для проверки токена перед установкой соединения
- События:
- 'message': приём и рассылка сообщений в комнату (roomId)
- 'join': присоединение к комнате
- 'leave': выход из комнаты
- 'disconnect': очистка данных
- Храни подключения в Map userId -> socketId
- Обработка ошибок: если токен невалиден — отключай сокет
Выведи код сервера (app.js) с комментариями. Используй socket.io версии 4.7+.
Пример использования: Идеально для чата поддержки или системы уведомлений. Пользователь подключается, передавая JWT, и сразу попадает в свою комнату.
Промт №5: Валидация входных данных через Joi/Zod
Для чего: Надёжная проверка данных от клиента перед обработкой — предотвращает 80% уязвимостей.
Напиши middleware для валидации запросов с использованием библиотеки Joi. Создай универсальный валидатор, который:
- Принимает схему Joi для body, params, query
- При ошибке возвращает 400 с детальным сообщением об ошибках (каждое поле отдельно)
- При успехе — передаёт управление next()
Дополнительно: напиши схемы для:
- Регистрации пользователя (email, password min 8 символов, name)
- Создания товара (title, price > 0, category из enum)
- Обновления профиля (все поля опциональны)
Выведи код с примерами использования в маршрутах.
Пример использования: Подключите validate(schema) к маршруту: router.post('/users', validate(userSchema), handler). Если клиент отправит невалидные данные — получит понятную ошибку, а не 500.
Промт №6: Обработка ошибок и логирование
Для чего: Централизованная обработка ошибок — must-have для любого production-приложения.
Создай систему обработки ошибок для Express-приложения. Требования:
- Кастомный класс AppError (statusCode, message, isOperational)
- Функция catchAsync для оборачивания асинхронных обработчиков (ломает try-catch)
- Глобальный middleware для обработки ошибок (err, req, res, next)
- В dev-режиме — выводи stack trace
- В prod-режиме — скрываем детали, возвращаем {error: 'Internal server error'}
- Логирование через библиотеку winston (сохраняй в файл errors.log)
- Для ошибок валидации Joi — преобразуй в читаемый формат
Выведи полный код с комментариями.
Пример использования: Вставьте app.use(errorHandler) в конец файла и оборачивайте все асинхронные функции в catchAsync. Приложение станет отказоустойчивым.
Промт №7: Асинхронные операции и очереди (Bull + Redis)
Для чего: Обработка фоновых задач (отправка писем, генерация отчётов, обработка изображений) без блокировки основного потока.
Реализуй очередь задач на Bull (Redis) для Express-приложения. Требования:
- Создай очередь 'email-queue' для отправки писем
- Job data: to, subject, html
- Worker обрабатывает задания (имитируй отправку через setTimeout)
- Добавь REST API endpoint POST /api/send-email, который добавляет задачу в очередь
- Возвращай jobId клиенту сразу (202 Accepted)
- Добавь endpoint GET /api/job/:id для проверки статуса (waiting/active/completed/failed)
- Обработка ошибок: при падении job — retry 3 раза с задержкой 5 секунд
- Используй Bull Board для мониторинга (опционально)
Выведи код с комментариями. Предположи, что Redis запущен на localhost:6379.
Пример использования: При отправке 1000 писем пользователи не ждут — ответ приходит мгновенно, а письма уходят в фоне. Bull Board позволяет видеть очередь в реальном времени.
Как адаптировать промты под свой проект
Все промты можно (и нужно) модифицировать. Вот несколько советов:
- Заменяйте библиотеки — если предпочитаете Zod вместо Joi, напишите «Замени Joi на Zod с теми же функциями»
- Указывайте версии — Node.js 20+ и Express 4.18+ — актуальные версии на 2026 год
- Добавляйте требования к безопасности — например, «используй helmet для заголовков безопасности»
- Уточняйте базу данных — Prisma, Sequelize, mongoose — промты адаптируются под любой ORM
Заключение
Эти 7 промтов покрывают 90% типовых задач при разработке на Node.js и Express. Они не просто генерируют код — они учат правильной архитектуре: разделению ответственности, обработке ошибок, безопасности. Используйте их как шпаргалку: скопировали, заменили сущности, получили работающий код за 2 минуты вместо 30.
Помните, что промты — это инструмент, а не замена пониманию. Всегда проверяйте сгенерированный код на уязвимости и тестируйте его. Но с этими шаблонами вы сэкономите десятки часов в месяц и сможете сосредоточиться на уникальной логике вашего приложения.
Если вы хотите углубиться в тему — рекомендую официальную документацию Express (expressjs.com) и Node.js (nodejs.org). Для практики попробуйте объединить несколько промтов в одно приложение: аутентификация + WebSocket + очередь задач — получите полноценный production-сервис.
Комментарии