Где передается полезная нагрузка (payload) в HTTP GET-запросе?

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

Ответ

В GET-запросе данные (payload) передаются в URL в виде query-строки.

Синтаксис: <URL>?key1=value1&key2=value2

  • Строка параметров начинается с символа ?.
  • Пары ключ=значение разделяются символом &.
  • Специальные символы должны быть закодированы (URL-encoded).

Пример:

GET /search?q=test+api&limit=10&page=2 HTTP/1.1
Host: example.com

Важные ограничения и best practices:

  1. Длина URL ограничена (обычно ~2048 символов), что не подходит для больших данных.
  2. Безопасность: Параметры GET видны в истории браузера, логах сервера. Не используйте GET для передачи паролей, токенов или конфиденциальных данных.
  3. Кэширование и закладки: GET-запросы могут кэшироваться и сохраняться в закладках.
  4. Семантика: GET предназначен для получения данных, а не для их модификации (согласно REST). Для отправки больших или сложных данных используйте методы POST или PUT.