Для чего используется модуль HTTP в Node.js?

«Для чего используется модуль HTTP в Node.js?» — вопрос из категории Node.js Core, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Модуль http (и его безопасный аналог https) — это низкоуровневый API Node.js для создания HTTP-серверов и клиентов. Он является фундаментом для большинства веб-фреймворков в экосистеме.

Основные сценарии использования:

  • Создание HTTP-сервера: Обработка входящих запросов (GET, POST и т.д.) и отправка ответов.
  • Создание HTTP-клиента: Выполнение исходящих запросов к другим серверам (например, для взаимодействия с внешними API).

Пример простого сервера:

const http = require('http');

const server = http.createServer((req, res) => {
  // Устанавливаем заголовки ответа
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  // Отправляем тело ответа и завершаем запрос
  res.end('Hello from Node.js HTTP server!');
});

server.listen(3000, () => {
  console.log('Server listening on port 3000');
});

Почему он "низкоуровневый" и что это значит на практике? В отличие от Express.js или Fastify, модуль http не предоставляет встроенных абстракций для:

  • Маршрутизации (роутинга) по URL и методам.
  • Промежуточного ПО (middleware).
  • Парсинга тела запроса (например, JSON или form-data).

Поэтому его часто используют напрямую для:

  1. Простейших сервисов или прокси.
  2. Создания кастомных, высокопроизводительных решений, где контроль над каждым этапом обработки запроса критичен.
  3. Как строительный блок для собственных фреймворков или библиотек.