TToolBox
💻
💻 dev
23 мая 2026 г.6 мин чтения

Как использовать HTTP‑модуль Node.js: сервер, REST API и запросы

В этой статье

HTTP‑модуль Node.js позволяет быстро создать сервер, реализовать REST‑API и гибко обрабатывать запросы без сторонних фреймворков.

HTTP‑модуль встроен в ядро Node.js и позволяет запустить полноценный веб‑сервер за 5 секунд, просто вызвав http.createServer(). Он обеспечивает низкоуровневый контроль над входящими запросами и исходящими ответами, что делает его идеальным для создания REST API без лишних зависимостей. Благодаря асинхронной модели ввода‑вывода, сервер обрабатывает до 10 000 запросов в секунду на обычном VPS 2 CPU/4 GB RAM в 2026 году.

Как создать простой HTTP‑сервер в Node.js?

Для базового сервера достаточно импортировать модуль http и вызвать createServer с функцией‑обработчиком.

  • 1. Откройте терминал и выполните node -v — убедитесь, что версия ≥ 18.0 (2026 год).
  • 2. Создайте файл server.js со следующим кодом:
    const http = require('http');
    const server = http.createServer((req, res) => {
      res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Привет, мир!');
    });
    server.listen(3000, () => console.log('Сервер запущен на порту 3000'));
  • 3. Запустите node server.js и откройте http://localhost:3000 — увидите сообщение «Привет, мир!».

Почему стоит использовать нативный HTTP‑модуль вместо Express?

Нативный модуль даёт минимум накладных расходов: каждый запрос обрабатывается без промежуточных слоёв, что экономит до 30 % CPU и до 25 % памяти.

  • Производительность: в тестах 2026 года нативный сервер обрабатывал 12 500 RPS, а Express — 9 800 RPS при одинаковой нагрузке.
  • Контроль: вы сами решаете, как парсить тело, как формировать заголовки и какие коды статуса возвращать.
  • Размер: отсутствие внешних зависимостей уменьшает размер проекта до ≈ 2 МБ, а не ≈ 30 МБ у типичного Express‑приложения.

Что делать, если нужно обработать JSON‑тело запроса?

Для парсинга JSON достаточно собрать данные из потока req и вызвать JSON.parse.

  • 1. Добавьте обработчик data и end:
    let body = '';
    req.on('data', chunk => { body += chunk; });
    req.on('end', () => {
      try {
        const data = JSON.parse(body);
        // дальше логика
      } catch (e) {
        res.writeHead(400, {'Content-Type': 'application/json'});
        res.end(JSON.stringify({error: 'Invalid JSON'}));
      }
    });
  • 2. Установите заголовок Content-Type: application/json в ответе, чтобы клиент знал о формате.
  • 3. При необходимости ограничьте размер тела: если body.length > 1e6 (≈ 1 МБ), сразу возвращайте 413 Payload Too Large.

Как реализовать маршрутизацию без внешних библиотек?

Маршрутизация реализуется простым разбором req.url и сравниванием с шаблонами.

  • 1. Выделите путь и метод:
    const {method, url} = req;
    const pathname = new URL(url, `http://${req.headers.host}`).pathname;
  • 2. Сравните с нужными маршрутами:
    if (method === 'GET' && pathname === '/users') {
      // вернуть список пользователей
    } else if (method === 'POST' && pathname === '/users') {
      // создать нового пользователя
    } else {
      res.writeHead(404, {'Content-Type': 'text/plain'});
      res.end('Not Found');
    }
  • 3. Для параметров используйте RegExp, например /^\/users\/(\d+)$/.exec(pathname) даст ID пользователя.

Как масштабировать HTTP‑сервер для нагрузки в 2026 году?

Для высокой нагрузки применяют кластеризацию и балансировщик, распределяя запросы между несколькими процессами.

  • 🔧 Cluster: в Node.js создайте воркеры равные количеству CPU (например, 8 процессоров → 8 воркеров). Каждый воркер слушает один и тот же порт, а ОС распределяет соединения.
  • 🔧 Load Balancer: используйте Nginx или Cloudflare в качестве L7‑балансировщика. При стоимости облачного баланса в 2026 году цены от 1500 ₽/мес за 100 Гб трафика.
  • 🔧 Мониторинг: подключите Prometheus + Grafana, отслеживая метрики http_requests_total, process_cpu_seconds_total и nodejs_eventloop_lag_seconds. При росте нагрузки более 70 % запросов с задержкой > 200 мс, масштабируйте горизонтально.
Воспользуйтесь бесплатным инструментом Node.js HTTP Server Builder на toolbox-online.ru — работает онлайн, без регистрации.
Поделиться:

Теги

#nodejs#http#api#server#javascript
💬
Служба поддержки
Отвечаем по вопросам инструментов и оплат
Напишите свой вопрос — оператор ответит здесь же. История диалога сохраняется на этом устройстве.