Ответ
Параметры в GET-запросе передаются в строке запроса (query string) URL после знака ? в формате ключ=значение. Несколько параметров разделяются амперсандом &.
Синтаксис:
https://api.example.com/resource?param1=value1¶m2=value2¶m3=value3
Ключевые правила и best practices:
-
URL Encoding: Специальные и не-ASCII символы должны быть закодированы (например, пробел →
%20или+).// JavaScript пример const url = `https://api.com/search?q=${encodeURIComponent('test query & name')}`; // Результат: https://api.com/search?q=test%20query%20%26%20name -
Ограничения: Длина URL ограничена (~2048-4096 символов в зависимости от браузера/сервера). Для больших объёмов данных используйте POST.
-
Безопасность: Параметры видны в логах, истории браузера, referrer. Никогда не передавайте пароли, токены или чувствительные данные в query string.
-
Идемпотентность и кеширование: GET-запросы должны быть идемпотентными и могут кешироваться.
Пример формирования запроса на Python (requests):
import requests
params = {
'search': 'Python tutorial',
'page': 2,
'sort': 'date',
'max_results': 50
}
response = requests.get('https://api.example.com/items', params=params)
# Фактический URL: https://api.example.com/items?search=Python+tutorial&page=2&sort=date&max_results=50 Ответ 18+ 🔞
Давай разберём эту хуйню про GET-параметры, а то некоторые думают, что это какая-то магия, а на деле — проще пареной репы, если не проще.
Смотри, когда ты стучишься на сервер через GET, все твои «хотелки» лепятся прямо в адресную строку, сразу после знака вопроса ?. Это и есть строка запроса, она же query string. Формат — проще некуда: ключ=значение. Если ключей больше одного — ставишь амперсанд & и добавляешь следующий. Всё, пиздец, никакой тайны.
Вот как это выглядит в жизни:
https://api.kakoy-to-site.com/tovar?category=elektronika&sort=price_asc&limit=20
Перевожу: «Эй, сервер, дай мне товары из категории «электроника», отсортированные по цене по возрастанию, и только 20 штук, не больше». Сервер, если не мудак, ответит.
А теперь главные правила, чтобы не обосраться:
-
Кодирование — твой друг, ёпта. Нельзя тупо пихать в URL что попало. Пробелы, амперсанды, русские буквы — всё это надо кодировать. Иначе запрос сломается, как хрустальная ваза в руках слона. В JavaScript для этого
encodeURIComponent().// Делаем правильно, а не как попало const url = `https://api.com/search?q=${encodeURIComponent('запрос & имя')}`; // Получится: https://api.com/search?q=%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%20%26%20%D0%B8%D0%BC%D1%8F -
Длина имеет значение, блядь. URL не резиновый. Где-то 2048 символов потянет, где-то 4096, но в целом — не разгоняйся. Если тебе надо отправить овердохуища данных (типа целого романа «Война и мир») — используй POST, а не извращайся с GET.
-
Безопасность, ёбушки-воробушки. Всё, что ты впихнул в строку запроса, видно всем: в истории браузера, в логах прокси, в реферере. НИКОГДА, слышишь, НИКОГДА не суй туда пароли, секретные токены или номер своей кредитки. Это как кричать в толпу «У меня в кармане тысяча долларов!».
-
GET — для получения, а не для изменений. Эти запросы должны быть идемпотентными (повторил пять раз — получил тот же результат) и их можно кешировать. Не используй GET для удаления или оплаты заказа, а то потом будешь удивляться, почему с карты списались пять раз.
Ну и пример на Python, чтобы вообще всё стало ясно:
import requests
# Собираем наши хотелки в словарик
params = {
'search': 'Python tutorial',
'page': 2,
'sort': 'date',
'max_results': 50
}
# Библиотека requests сама, блядь, всё закодирует и прилепит к URL
response = requests.get('https://api.example.com/items', params=params)
# На выходе получится красивый, правильный URL:
# https://api.example.com/items?search=Python+tutorial&page=2&sort=date&max_results=50
Вот и вся наука. Главное — думай головой, что и куда ты передаёшь, и не делай глупостей.