Как данные передаются в HTTP GET-запросе?

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

Ответ

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

Синтаксис: Параметры добавляются после знака вопроса ? в формате ключ=значение. Пары разделяются амперсандом &.

https://api.example.com/search?query=test&limit=10&sort=asc

В этом примере передано три параметра: query, limit и sort.

Ключевые особенности и ограничения:

  • Видимость: Параметры видны в адресной строке браузера, истории и логах сервера. Не подходят для передачи конфиденциальных данных (паролей, токенов).
  • Ограничение длины: Общая длина URL ограничена (обычно ~2048 символов, зависит от браузера и сервера).
  • Кэширование: GET-запросы могут кэшироваться браузерами и промежуточными прокси.
  • Кодирование: Специальные символы и пробелы должны быть закодированы (например, пробел как %20).

Пример формирования запроса на JavaScript:

// Использование URLSearchParams для корректного кодирования
const params = new URLSearchParams({
  query: 'test search',
  page: 2,
  lang: 'en'
});
const url = `https://api.example.com/search?${params.toString()}`;
// Результат: https://api.example.com/search?query=test+search&page=2&lang=en
fetch(url);