Из чего состоит HTTP-ответ (response)?

«Из чего состоит HTTP-ответ (response)?» — вопрос из категории Сети, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP-ответ состоит из нескольких обязательных и опциональных частей:

  1. Строка статуса (Status Line)

    • HTTP/1.1 200 OK
    • Содержит версию протокола, код статуса и его текстовое описание.
  2. Заголовки (Headers)

    • Мета-информация для клиента и сервера.
    • Примеры:
      Content-Type: application/json; charset=utf-8
      Cache-Control: no-cache
      Server: nginx/1.18.0
      Set-Cookie: sessionId=abc123; Secure; HttpOnly
  3. Пустая строка (CRLF)

    • Разделитель между заголовками и телом ответа.
  4. Тело ответа (Body)

    • Основные данные (HTML, JSON, изображение и т.д.). Может отсутствовать (например, для ответа 204 No Content).
    • Пример (JSON):
      {
        "status": "success",
        "data": {
          "id": 42,
          "name": "Example"
        }
      }

Практический пример полного ответа:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 29
Date: Mon, 27 Jan 2025 10:00:00 GMT

{"message":"Data retrieved"}

В современных фреймворках (например, Express.js для Node.js или Django для Python) эти компоненты инкапсулированы в объект ответа (например, res в Express), что упрощает управление ими.