Что такое HTTP GET-запрос?

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

Ответ

GET — HTTP-метод для получения данных с сервера. Параметры передаются в URL-строке, запрос не имеет тела.

Пример на Swift с URLSession:

func fetchUserProfile(userId: Int) {
    // Параметры в URL
    let urlString = "https://api.example.com/users/(userId)?fields=name,email"
    guard let url = URL(string: urlString) else { return }

    var request = URLRequest(url: url)
    request.httpMethod = "GET"
    request.setValue("application/json", forHTTPHeaderField: "Accept")

    URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else { return }

        // Обработка JSON-ответа
        if let json = try? JSONSerialization.jsonObject(with: data) {
            print("Получены данные: (json)")
        }
    }.resume()
}

Характеристики GET-запроса:

  • Идемпотентный — повторные запросы не изменяют состояние сервера
  • Кэшируемый — ответы могут кэшироваться браузером/CDN
  • Ограниченная длина — параметры в URL ограничены ~2000 символов
  • Видимый — параметры отображаются в истории браузера, логах

Когда использовать: ✅ Получение данных (списки, детали) ✅ Поиск с фильтрами (параметры в URL) ✅ Статические ресурсы (изображения, CSS)

Когда НЕ использовать: ❌ Передача чувствительных данных (пароли, токены) ❌ Большие объёмы данных (используйте POST с телом) ❌ Операции изменения состояния (используйте POST/PUT/DELETE)