> Что такое протокол HTTP и как он работает (JavaScript)

Уровень: junior · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы

Компании: QueenInteractiveGamesLtd

Стек: Node.js, JavaScript

> Пример ответа

Короткий ответ

HTTP - это протокол прикладного уровня для передачи гипертекста, работающий по модели "запрос-ответ". Клиент отправляет запрос серверу, сервер возвращает ответ с кодом статуса и данными. HTTP использует TCP как транспорт, является stateless (не хранит состояние между запросами) и поддерживает разные методы (GET, POST, PUT, DELETE). Современная версия - HTTP/2 и HTTP/3.

Подробное объяснение

HTTP (HyperText Transfer Protocol) - это текстовый протокол, который определяет формат сообщений между клиентом (браузером, Node.js приложением) и сервером. Работает поверх TCP/IP, по умолчанию на порту 80 (HTTPS - 443).

Основные элементы:

  • Методы: GET (получить), POST (создать), PUT (обновить), DELETE (удалить), PATCH (частично обновить), HEAD (только заголовки), OPTIONS (проверить доступные методы)
  • Статусы: 1xx (информационные), 2xx (успех), 3xx (редирект), 4xx (ошибка клиента), 5xx (ошибка сервера)
  • Заголовки: передают метаданные - Content-Type, Authorization, Cache-Control, Cookie
  • Тело: данные запроса/ответа (JSON, HTML, файлы)

Процесс работы:

  1. Клиент устанавливает TCP-соединение с сервером
  2. Отправляет HTTP-запрос (метод, путь, заголовки, тело)
  3. Сервер обрабатывает запрос, формирует ответ (статус, заголовки, тело)
  4. Сервер закрывает соединение (в HTTP/1.1) или может переиспользовать (keep-alive)

HTTP - stateless, каждый запрос независим. Для сохранения состояния используют куки, сессии, токены (JWT). В Node.js для работы с HTTP используется встроенный модуль http или фреймворки (Express, Koa).

На практике

При разработке на Node.js и JavaScript важно:

  • Использовать правильные методы и статусы для REST API
  • Обрабатывать ошибки на сервере (try/catch, middleware)
  • Настраивать CORS для кросс-доменных запросов
  • Учитывать размер тела запроса (лимиты)
  • Использовать HTTPS в продакшене
  • Кэшировать ответы через заголовки Cache-Control

Пример типичного REST API на Express:

  • GET /api/users - получить список пользователей
  • POST /api/users - создать пользователя
  • PUT /api/users/:id - обновить пользователя
  • DELETE /api/users/:id - удалить пользователя

Пример кода

JAVASCRIPT
const http = require('http');
const server = http.createServer((req, res) => {
// req.method - GET, POST и т.д.
// req.url - путь запроса
// req.headers - объект заголовков
if (req.method === 'GET' && req.url === '/api/health') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ status: 'ok' }));
} else if (req.method === 'POST' && req.url === '/api/data') {
let body = '';
req.on('data', chunk => body += chunk);
req.on('end', () => {
const data = JSON.parse(body);
res.writeHead(201, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ received: data }));
});
} else {
res.writeHead(404);
res.end('Not Found');
}
});
server.listen(3000, () => console.log('Server on :3000'));

Как отвечать на собеседовании

Начни с краткого определения: "HTTP - это протокол для передачи данных по модели запрос-ответ". Затем опиши ключевые элементы: методы, статусы, заголовки. Объясни, что протокол stateless, и как это компенсируется (куки, токены). Упомяни, что в Node.js работа с HTTP встроена, но чаще используют Express. Если спросят про версии - скажи, что HTTP/2 мультиплексирует запросы, HTTP/3 использует QUIC вместо TCP.

Что проверяет интервьюер

  • Понимание базовой модели клиент-сервер
  • Знание основных HTTP-методов и статусов
  • Умение объяснить stateless-природу протокола
  • Понимание, как HTTP применяется в Node.js
  • Способность привести практический пример (REST API)

Типичные ошибки

  • Путают HTTP и HTTPS (HTTPS - HTTP + шифрование через TLS/SSL)
  • Думают, что HTTP хранит состояние между запросами
  • Не знают разницы между GET и POST (GET - идемпотентный, POST - нет)
  • Забывают про заголовки (Content-Type, Authorization)
  • Не понимают, как работают редиректы (3xx)
  • Путают порты (80 для HTTP, 443 для HTTPS)

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью