Как бэкенд обрабатывает HTTP-запрос?

«Как бэкенд обрабатывает HTTP-запрос?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Бэкенд обрабатывает HTTP-запрос через маршрутизацию к API-эндпоинтам. Запрос состоит из трёх основных частей:

  • Заголовки (Headers) — метаданные: Content-Type, Authorization, User-Agent.
  • Тело (Body) — данные запроса в форматах JSON, XML или form-data.
  • Параметры строки запроса (Query Parameters) — для фильтрации и пагинации (например, ?page=2&limit=10).

Типичный процесс обработки:

  1. Маршрутизация — фреймворк (Express, Django, Spring) направляет запрос на нужный обработчик по URL и методу (GET, POST и т.д.).
  2. Парсинг и валидация — извлечение и проверка данных из тела и заголовков.
  3. Аутентификация/авторизация — проверка прав доступа (например, по J-токену в заголовке Authorization).
  4. Выполнение бизнес-логики — взаимодействие с базой данных, внешними сервисами.
  5. Формирование ответа — возврат статус-кода (200, 404, 500) и данных (обычно JSON).

Пример на Node.js (Express):

app.post('/api/users', (req, res) => {
  // 1. Извлечение данных
  const { name, email } = req.body;
  const token = req.headers.authorization;

  // 2. Базовая валидация
  if (!name || !email) {
    return res.status(400).json({ error: 'Name and email are required' });
  }

  // 3. Имитация бизнес-логики (сохранение в БД)
  const newUser = { id: Date.now(), name, email };
  users.push(newUser);

  // 4. Успешный ответ
  res.status(201).json({ success: true, user: newUser });
});