10 промтов для Node.js и Express: API, middleware, авторизация

Введение

Node.js и Express остаются одним из самых популярных стеков для создания серверных приложений. По данным опроса State of JS 2025, Express используют 78% разработчиков, работающих с Node.js. Однако даже опытные инженеры тратят до 30% времени на написание шаблонного кода: настройку маршрутов, middleware, авторизацию. Современные AI-инструменты, такие как GPT-4o и Claude 3.5 Opus, позволяют сократить это время в 3-5 раз — если правильно формулировать промты.

В этой статье я собрал 10 проверенных промтов, которые использую в ежедневной работе. Каждый промт решает конкретную задачу: от создания REST API до настройки WebSocket и JWT-аутентификации. Никакой воды — только код, примеры и разбор.

1. Базовый шаблон Express-сервера с middleware

Промт:

"Сгенерируй файл server.js для Express-приложения. Включи: CORS, парсинг JSON и URL-encoded данных, morgan для логирования, обработку 404 и глобальный обработчик ошибок. Используй ES-модули (import/export). Добавь комментарии к каждому middleware."

Пример использования:
AI возвращает готовый файл с настройками. Экономит 10-15 минут ручного копирования из документации Express.

Результат (сокращённо):

import express from 'express';
import cors from 'cors';
import morgan from 'morgan';

const app = express();

app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(morgan('dev'));

app.use((req, res, next) => {
  res.status(404).json({ error: 'Not Found' });
});

app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).json({ error: 'Internal Server Error' });
});

export default app;

2. REST API для CRUD-операций с MongoDB (Mongoose)

Промт:

"Напиши модель Mongoose для пользователя (User) с полями: имя, email, пароль (хешированный), дата создания. Создай контроллер с CRUD-операциями (создать, получить всех, получить по ID, обновить, удалить). Используй async/await и try/catch. Добавь валидацию email с помощью validator."

Почему это работает:
Промт содержит все необходимые детали: поля модели, типы операций, обработку ошибок. AI генерирует код, который можно сразу вставить в проект — нужно только подключить базу данных.

Кейс:
При разработке MVP для стартапа (Asibiont) мы таким образом создали 3 модели за 20 минут вместо 2 часов.

3. JWT-аутентификация с access и refresh токенами

Промт:

"Реализуй middleware для проверки JWT-токена в Express. Используй jsonwebtoken. Создай функции: generateAccessToken (срок 15 минут) и generateRefreshToken (срок 7 дней). Настрой эндпоинты /api/auth/login, /api/auth/refresh, /api/auth/logout. Храни refresh-токены в MongoDB. Добавь защиту маршрута с middleware 'authenticateToken'."

Разбор:
Этот промт охватывает полный цикл аутентификации. AI генерирует:
- Middleware для проверки токена
- Функции генерации токенов
- Эндпоинты для входа, обновления и выхода
- Модель для хранения refresh-токенов

Важно:
Перед использованием убедитесь, что AI не предлагает хранить пароли в открытом виде. Если это происходит — добавьте уточнение "используй bcrypt для хеширования паролей".

4. Кастомный middleware для логирования запросов

Промт:

"Создай middleware для Express, который логирует в консоль: метод, URL, статус ответа, время выполнения запроса в миллисекундах. Добавь возможность передавать опции: цветной вывод (chalk), игнорирование определённых путей (например, /health). Используй process.hrtime.bigint() для точности."

Пример вывода:

[14:23:45] GET /api/users 200 12ms
[14:23:46] POST /api/auth/login 401 3ms

Практическое применение:
При отладке производительности API такой middleware помогает быстро находить медленные эндпоинты. Мы используем его в проекте Asibiont для мониторинга latency.

5. WebSocket-сервер на Socket.IO с авторизацией

Промт:

"Настрой Socket.IO сервер на Express с middleware для проверки JWT-токена при подключении. Реализуй комнаты: пользователь подключается к комнате 'user:{userId}'. Обработай события: 'send_message' (сохраняет в MongoDB), 'typing', 'disconnect'. Добавь rate limiting: не более 10 сообщений в секунду на пользователя."

Ключевые моменты:
- Middleware для Socket.IO проверяет токен из handshake.query
- Комнаты позволяют отправлять личные сообщения
- Rate limiting защищает от спама

Ссылка на инструмент:
Для управления WebSocket-подключениями можно использовать готовые решения. В частности, ASI Biont поддерживает подключение к Socket.IO через API — подробнее на asibiont.com/courses

6. Middleware для валидации данных (Joi/Zod)

Промт:

"Создай middleware для валидации тела запроса (req.body) с помощью Zod. Определи схемы для: создания пользователя (name, email, password), обновления профиля (bio, avatar URL). Middleware должен возвращать 400 с детализированными ошибками валидации. Добавь TypeScript-типы."

Почему Zod:
Zod набирает популярность (более 35 млн загрузок в неделю на npm) благодаря TypeScript-интеграции. В отличие от Joi, он генерирует типы автоматически.

Пример схемы:

import { z } from 'zod';

export const createUserSchema = z.object({
  name: z.string().min(2).max(50),
  email: z.string().email(),
  password: z.string().min(8).regex(/[A-Z]/),
});

7. Rate limiting и защита от DDoS (express-rate-limit)

Промт:

"Настрой rate limiting для Express-приложения с express-rate-limit. Создай три уровня: глобальный (100 запросов в минуту), для /api/auth (5 попыток в минуту), для /api/upload (10 запросов в минуту). Используй MongoDB для хранения счётчиков (через rate-limit-mongo). Добавь кастомное сообщение об ошибке."

Почему это важно:
Без rate limiting ваш API уязвим для brute-force атак. В 2025 году количество DDoS-атак на API выросло на 40% (отчёт Cloudflare 2025).

Код (фрагмент):

import rateLimit from 'express-rate-limit';
import MongoStore from 'rate-limit-mongo';

const authLimiter = rateLimit({
  store: new MongoStore({ uri: process.env.MONGO_URI }),
  windowMs: 60 * 1000,
  max: 5,
  message: { error: 'Too many attempts, try later' },
});

8. Загрузка файлов с multer и валидацией

Промт:

"Создай middleware для загрузки файлов с multer. Настрой: сохранение в папку uploads/ с уникальными именами (UUID), фильтр по типу (только JPEG, PNG, PDF), лимит размера 5MB. Добавь эндпоинт POST /api/upload, который возвращает URL загруженного файла. Обработай ошибки: слишком большой файл, неверный формат."

Дополнительно:
Попроси AI добавить обработку ошибок на русском языке для пользователей: "Файл слишком большой. Максимальный размер — 5MB".

9. Swagger-документация для API

Промт:

"Сгенерируй Swagger (OpenAPI 3.0) спецификацию для Express API. Опиши эндпоинты: GET /api/users, POST /api/users, GET /api/users/:id. Используй swagger-jsdoc и swagger-ui-express. Добавь схемы для User и Error. Настрой авторизацию через Bearer token."

Результат:
AI создаёт полный файл спецификации и код для подключения Swagger UI. Экономит 30-40 минут ручного написания YAML.

10. Тестирование API с Supertest и Jest

Промт:

"Напиши тесты для REST API с Supertest и Jest. Протестируй: POST /api/users (успешное создание, ошибка валидации, дубликат email), GET /api/users (пустой список, список с данными), DELETE /api/users/:id (успешное удаление, несуществующий ID). Используй beforeEach для очистки базы данных. Добавь моки для внешних сервисов."

Почему это работает:
Промт явно указывает, что нужно тестировать (успех, ошибка, граничные случаи). AI генерирует тесты, покрывающие 80% типовых сценариев.

Заключение

Эти 10 промтов покрывают 90% типовых задач при разработке на Node.js и Express. Они экономят время, снижают количество ошибок и позволяют сосредоточиться на бизнес-логике.

Совет:
Не используйте промты вслепую. Всегда проверяйте сгенерированный код на безопасность (утечка данных, инъекции) и соответствие стандартам. Лучшие практики описаны в официальной документации Express и Node.js.

Что дальше:
Попробуйте адаптировать эти промты под свой проект. Замените MongoDB на PostgreSQL, Socket.IO на WebSocket нативный — AI подстроится под изменения. Главное — давать конкретные инструкции.

Использованные источники:
- State of JS 2025: https://stateofjs.com
- Express.js документация: https://expressjs.com
- Cloudflare DDoS Report 2025: https://cloudflare.com/reports

← Все статьи

Комментарии

Читайте также