Передаёт ли HTTP GET-метод данные на сервер?

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

Ответ

Да, передаёт. GET передаёт данные на сервер в виде параметров строки запроса (query parameters), которые становятся частью URL.

Как это работает:

GET /api/users?role=admin&active=true HTTP/1.1
Host: example.com

Сервер извлекает параметры role=admin и active=true из URL для обработки.

Отличия от POST (когда что использовать): Критерий GET POST
Назначение Получение данных (идемпотентный) Создание/отправка данных
Размещение данных В URL (строка запроса) В теле запроса (request body)
Видимость Видна в URL, истории, логах Скрыта в теле запроса
Кэширование Да (браузером, CDN) Нет (по умолчанию)
Ограничения длины Да (ограничение длины URL) Нет (теоретически)
Безопасность Не для секретов Более безопасен для конфиденц. данных

Практическое правило:

  • Используйте GET для запросов, которые получают информацию (поиск, фильтрация, пагинация).
  • Используйте POST (или PUT/PATCH) для операций, которые изменяют состояние на сервере (создание заказа, отправка формы).