Gernar
HTTP, API и сеть

Что такое HTTP

Разбор вопроса «Что такое HTTP» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.

Вопрос

Что такое HTTP

Профессия

Frontend Developer

Что хочет услышать интервьюер

Интервьюер ожидает четкого определения HTTP, понимания его роли в веб-разработке, знания базовых методов и особенностей (stateless). Важно упомянуть современные версии (HTTP/2, HTTP/3) и их преимущества.

Ключевые тезисы

  • HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня для передачи данных в сети, основа для обмена информацией в интернете.
  • Использует модель «клиент-сервер»: клиент (например, браузер) отправляет запрос, сервер возвращает ответ.
  • Работает поверх TCP/IP, является stateless-протоколом (не сохраняет состояние между запросами).
  • Основные методы запросов: GET (получение данных), POST (отправка данных), PUT/PATCH (обновление), DELETE (удаление).
  • HTTP/2 и HTTP/3 — современные версии протокола с улучшенной производительностью (мультиплексирование, сжатие заголовков).

Подробный ответ

HTTP (HyperText Transfer Protocol) — это протокол прикладного уровня для передачи данных в интернете. Это основа взаимодействия между клиентом (браузером) и сервером.

Как работает HTTP

  1. Клиент отправляет запрос (Request) на сервер
  2. Сервер обрабатывает запрос и возвращает ответ (Response)
  3. Каждый запрос независим — протокол не сохраняет состояние (stateless)

Структура HTTP-запроса

GET /api/users HTTP/1.1
Host: example.com
Accept: application/json
Authorization: Bearer token123
  • Метод — действие (GET, POST, PUT, DELETE)
  • URL — путь к ресурсу
  • Заголовки — метаинформация
  • Тело — данные (для POST, PUT)

HTTP-методы

МетодНазначениеИдемпотентность
GETПолучение данных
POSTСоздание ресурса
PUTПолное обновление
PATCHЧастичное обновление
DELETEУдаление ресурса

Коды ответов

  • 2xx — успех (200 OK, 201 Created, 204 No Content)
  • 3xx — перенаправление (301 Moved, 304 Not Modified)
  • 4xx — ошибка клиента (400 Bad Request, 401 Unauthorized, 404 Not Found)
  • 5xx — ошибка сервера (500 Internal Server Error, 503 Service Unavailable)

HTTP/1.1 vs HTTP/2 vs HTTP/3

  • HTTP/1.1 — текстовый, одно соединение на запрос
  • HTTP/2 — бинарный, мультиплексирование, сжатие заголовков
  • HTTP/3 — работает поверх QUIC (UDP), быстрее установка соединения

Практические примеры

Пример 1

Fetch API: GET-запрос

const response = await fetch('https://api.example.com/users');

console.log(response.status);  // 200
console.log(response.headers.get('Content-Type'));

const users = await response.json();
console.log(users);

fetch возвращает промис с объектом Response, содержащим статус, заголовки и методы для чтения тела.

Пример 2

POST-запрос с отправкой данных

const response = await fetch('https://api.example.com/users', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Alice',
    email: 'alice@example.com'
  })
});

if (response.status === 201) {
  const newUser = await response.json();
  console.log('Создан:', newUser.id);
}

Сервер возвращает 201 Created при успешном создании ресурса.

Пример 3

Обработка ошибок HTTP

try {
  const response = await fetch('/api/data');

  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${response.statusText}`);
  }

  const data = await response.json();
} catch (error) {
  if (error instanceof TypeError) {
    console.error('Сетевая ошибка');
  } else {
    console.error(error.message);
  }
}

fetch не выбрасывает ошибку при 4xx/5xx — это нужно проверять через response.ok.

Частые ошибки

  • Ошибка: Непонимание различий между методами HTTP-запросов, например, использование GET вместо POST для отправки данных.
  • Ошибка: Игнорирование необходимости обработки HTTP-кодов состояния, что может привести к неожиданным ошибкам в приложении.

Связанные темы

  • HTTPS и SSL/TLS — безопасная передача данных.
  • REST API — архитектурный стиль для создания веб-сервисов.
  • WebSockets — протокол для двусторонней связи между клиентом и сервером.

Follow-up вопросы

Какие основные методы HTTP-запросов ты знаешь?

Уровень: basic

Основные методы: GET (получение данных), POST (отправка данных), PUT (полное обновление), PATCH (частичное обновление), DELETE (удаление). Также есть HEAD (получение заголовков) и OPTIONS (информация о поддерживаемых методах).

Чем отличается HTTP от HTTPS?

Уровень: intermediate

HTTPS — это защищённая версия HTTP, использующая шифрование (обычно TLS/SSL). HTTPS обеспечивает конфиденциальность, целостность данных и аутентификацию сервера, что критично для безопасности.

Что такое HTTP-коды состояния и какие основные группы ты помнишь?

Уровень: basic

HTTP-коды состояния — трёхзначные числа в ответе сервера. Основные группы: 1xx (информационные), 2xx (успех, например 200 OK), 3xx (перенаправления), 4xx (ошибки клиента, например 404 Not Found), 5xx (ошибки сервера).

Как HTTP/2 улучшает производительность по сравнению с HTTP/1.1?

Уровень: intermediate

HTTP/2 вводит мультиплексирование (параллельная передача ресурсов в одном соединении), сжатие заголовков, приоритизацию запросов и server push (отправка данных до запроса клиента), что ускоряет загрузку страниц.

Что такое «stateless» в контексте HTTP и как это влияет на разработку?

Уровень: advanced

Stateless означает, что сервер не хранит состояние между запросами. Для работы с сессиями (например, авторизацией) используют cookies, токены или другие механизмы, что требует дополнительной реализации на клиенте/сервере.

Содержание