Какими способами можно передать параметры в HTTP GET-запросе?

Ответ

Параметры в GET-запросе передаются двумя основными способами:

1. Query Parameters (Параметры строки запроса)

Добавляются в URL после знака ? в формате ключ=значение. Несколько параметров разделяются амперсандом &.

Пример URL: https://api.example.com/search?query=python&limit=10&page=2

2. HTTP Headers (Заголовки)

Используются для передачи служебной информации: аутентификации, типа контента, управления кэшем и т.д.

Пример заголовков:

GET /api/data HTTP/1.1
Host: example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
X-API-Key: your-secret-key
Accept: application/json

Пример кода на Python с использованием библиотеки requests:

import requests

# 1. Параметры в URL (query string)
params = {"page": 2, "limit": 10}
response = requests.get("https://api.example.com/items", params=params)

# 2. Параметры в заголовках (headers)
headers = {
    "Authorization": "Bearer token123",
    "User-Agent": "MyTestClient/1.0"
}
response = requests.get("https://api.example.com/secure", headers=headers)

Ключевое отличие: Query parameters видны в URL и часто используются для фильтрации, сортировки и пагинации данных. Заголовки предназначены для метаданных запроса.

Ответ 18+ 🔞

Давай разжую, как там эти параметры в GET-запросе шляются, а то некоторые думают, что это какая-то ебейшая магия. Их, блядь, всего два основных способа, как водку пить — либо залпом, либо с закуской.

1. Query Parameters, они же Параметры строки запроса

Это когда ты лепишь всё прямо в адресную строку, после знака вопроса. Формат простой, как три копейки: ключ=значение. А если параметров больше одного, то склеиваешь их амперсандом &, вот и вся философия.

Смотри, как это выглядит вживую: https://api.example.com/search?query=python&limit=10&page=2 Видишь? Тут мы ищем про питон, лимит — 10 штук, и просим вторую страницу. Всё на виду, как на ладони. Удобно для фильтров, сортировки и прочей хуйни, которую пользователь может сам в адресной строке поковырять.

2. HTTP Headers, они же Заголовки

А вот это уже для служебки, для метаданных. Сюда всякую важную дичь пихают: кто ты такой (авторизация), какой контент хочешь получить, как кэшировать и прочее. В URL этого не видно, оно прячется под капотом запроса.

Вот тебе пример, как это в заголовках плавает:

GET /api/data HTTP/1.1
Host: example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
X-API-Key: your-secret-key
Accept: application/json

Смотри: Authorization — это типа пропуск, Accept — говорит "дай мне JSON, а не какую-то хуйню". Умно, да?

А теперь, чтобы совсем жизнь мёдом не казалась, вот тебе код на Python с библиотекой requests:

import requests

# 1. Параметры в URL (query string) — для фильтрации и пагинации
params = {"page": 2, "limit": 10}
response = requests.get("https://api.example.com/items", params=params)

# 2. Параметры в заголовках (headers) — для всего секретного и служебного
headers = {
    "Authorization": "Bearer token123",
    "User-Agent": "MyTestClient/1.0"
}
response = requests.get("https://api.example.com/secure", headers=headers)

Итог, блядь, простой: Query parameters — это то, что ты видишь в адресной строке браузера, для данных запроса. Заголовки — это то, что прячется, для управления самим запросом. Не перепутай, а то сервер тебе такого наговорит, что мало не покажется.