Gernar
HTTP, API и сеть

Из чего состоит HTTP запрос

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

Вопрос

Из чего состоит HTTP запрос

Профессия

Frontend Developer

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

Интервьюер хочет убедиться, что кандидат понимает структуру HTTP запроса, знает основные компоненты (стартовая строка, заголовки, тело) и их назначение. Также важно упомянуть распространенные методы (GET, POST) и случаи их использования.

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

  • HTTP запрос состоит из стартовой строки (метод, URI, версия HTTP), заголовков (headers) и тела (body, опционально).
  • Стартовая строка определяет тип запроса (GET, POST, PUT, DELETE и др.), путь к ресурсу и версию протокола.
  • Заголовки содержат метаданные запроса, такие как Host, Content-Type, Authorization и другие.
  • Тело запроса (body) присутствует не всегда (например, в GET его нет) и содержит данные, передаваемые на сервер (например, JSON или form-data).
  • Примеры методов: GET (получение данных), POST (отправка данных), PUT (обновление), DELETE (удаление).

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

HTTP запрос — это текстовое сообщение, которое клиент (например, браузер) отправляет серверу для получения или изменения данных. Он состоит из трех основных частей: стартовой строки, заголовков и тела запроса. Стартовая строка содержит метод запроса (GET, POST и др.), URI ресурса и версию HTTP. Заголовки передают метаданные, такие как тип содержимого (Content-Type), авторизация (Authorization) и другие параметры. Тело запроса (необязательное) содержит данные, например, JSON или form-data, которые отправляются на сервер.

Методы HTTP определяют действие, которое нужно выполнить с ресурсом. GET используется для получения данных, POST — для отправки, PUT — для обновления, DELETE — для удаления. Например, GET /users запрашивает список пользователей, а POST /users с телом {name: 'John'} создает нового пользователя.

Заголовки играют важную роль в обработке запроса. Например, Content-Type: application/json указывает, что тело запроса содержит JSON, а Authorization: Bearer token обеспечивает доступ к защищенным ресурсам. Отсутствие или неправильное указание заголовков может привести к ошибкам, например, 400 Bad Request.

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

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

Пример 1

Пример GET запроса без тела: GET /api/users HTTP/1.1 Host: example.com Accept: application/json

Пример 2

Пример POST запроса с телом (JSON): POST /api/users HTTP/1.1 Host: example.com Content-Type: application/json

{"name": "Alice", "age": 25}

Пример 3

Пример с заголовком Authorization: GET /api/profile HTTP/1.1 Host: example.com Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

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

  • Использование тела (body) в GET запросе — хотя некоторые серверы могут его обрабатывать, это нарушает стандарт HTTP.
  • Путаница между PUT и POST: PUT используется для полного обновления ресурса, POST — для создания или частичного обновления.
  • Пропуск обязательных заголовков, например, Content-Type при отправке JSON.

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

  • REST API — архитектурный стиль, основанный на HTTP.
  • HTTPS — защищенная версия HTTP с шифрованием.
  • Cookies и сессии — механизмы управления состоянием в HTTP.

Follow-up вопросы

Какие HTTP-методы вы знаете и для чего они используются?

Уровень: basic

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

Что такое заголовки (headers) и какие из них чаще всего используются?

Уровень: intermediate

Заголовки содержат метаданные запроса. Часто используемые: Host (домен сервера), Content-Type (тип данных в теле запроса, например, JSON), Authorization (данные для аутентификации), Accept (тип данных, которые клиент может принять).

В чем разница между методами POST и PUT?

Уровень: intermediate

POST используется для создания нового ресурса, а PUT — для полного обновления существующего ресурса. PUT идемпотентен (повторное выполнение не изменяет результат), а POST — нет.

Что происходит с телом запроса в методе GET?

Уровень: basic

Метод GET не использует тело запроса. Данные передаются через URL в виде параметров запроса (query parameters). Это связано с его предназначением — получение данных, а не их отправка.

Как HTTP/2 отличается от HTTP/1.1 в части структуры запросов?

Уровень: advanced

HTTP/2 использует бинарные фреймы вместо текстовых сообщений, что повышает эффективность. Также поддерживается мультиплексирование — возможность отправки нескольких запросов одновременно через одно соединение, что уменьшает задержки.

Содержание