Ответ
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)
Ответ 18+ 🔞
А, слушай, вот этот твой GET-запрос, блядь! Это ж как в магазин сходить, понимаешь? Пришёл, посмотрел на полки, хуй взял — и домой. Ничего не трогаешь, ничего не ломаешь, просто смотришь, что есть.
Вот смотри, на Swift'е это выглядит примерно так, ёпта:
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()
}
Видишь? Никакого тела запроса, сука! Всё в адресной строке, как в старые добрые времена, когда порно искали по прямым ссылкам, блядь.
А теперь про особенности, в рот меня чих-пых:
Идемпотентный — это значит, что сколько раз ни тыкай — хуй сломаешь. Десять раз запросил профиль — десять раз получил одно и то же. Сервер не охуевает от твоих запросов.
Кэшируемый — браузер или прокси могут запомнить ответ и в следующий раз не дергать сервер, а отдать из кэша. Экономия, блядь, трафика!
Ограниченная длина — ну, потому что URL не резиновый, ёпта. Больше пары тысяч символов — и пошло-поехало, обрезка, ошибки. Не надо туда всю «Войну и мир» пихать!
Видимый — это вообще песня! Все параметры торчат в адресной строке, как хуй из штанов. История браузера, логи сервера — всё видят, что ты там искал. Хуй скроешь!
Когда его юзать, а когда — нет:
✅ Можно, когда просто получаешь данные: список товаров, профиль юзера, поиск с фильтрами (фильтры — в URL, как GET-параметры). Или статику: картинки, стили.
❌ Нельзя, блядь, когда передаёшь секреты: пароли, токены. Все увидят! Или когда данных дохуя — лучше POST с телом. И уж точно не для изменений на сервере! Не GET'ом удалять или обновлять, а то потом будешь охуевать, почему всё сломалось.
Короче, GET — это как вежливо спросить: «Можно я посмотрю?». А не как вломиться в дом с криком «Щас всё перевернём!».