📝 API

Структура URL и query-параметры

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
08.05.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
48
🌱
Уровень
Начальный
🐦 💼 ✈️

Каждый HTTP-запрос — это обращение к конкретному адресу. Понимание структуры URL помогает не гадать, что происходит, а читать запросы как текст.

Из чего состоит URL

https://api.chucknorris.io/jokes/random?category=dev&limit=5
│      │                   │            │
│      │                   │            └── query-параметры
│      │                   └───────────── путь (path)
│      └───────────────────────────────── хост (host)
└──────────────────────────────────────── протокол (scheme)
  • Протокол (https://) — способ передачи данных. Всегда используй https, не http
  • Хост (api.chucknorris.io) — адрес сервера
  • Путь (/jokes/random) — конкретный ресурс на сервере
  • Query-параметры (?category=dev) — дополнительные данные для фильтрации или настройки

Query-параметры: синтаксис

Query-параметры начинаются с ? и записываются парами ключ=значение:

?category=dev

Несколько параметров разделяются символом &:

?category=dev&limit=5&lang=ru

Проблема ручной сборки URL

Если собирать URL вручную через f-строку, легко ошибиться:

# Плохо — ручная сборка
city = "New York"
url = f"https://api.example.com/weather?city={city}"
# Итог: ?city=New York — пробел сломает запрос!

Пробелы и спецсимволы (&, /, #, ?) в значениях нужно URL-кодировать:
- пробел → %20
- &%26
- /%2F

Делать это вручную — источник ошибок.

Правильный способ — params= в requests

Библиотека requests кодирует параметры автоматически:

import requests

response = requests.get(
    "https://api.chucknorris.io/jokes/random",
    params={"category": "dev"}
)
# Итоговый URL: .../jokes/random?category=dev

С пробелами тоже всё хорошо:

response = requests.get(
    "https://api.example.com/search",
    params={"q": "New York", "lang": "ru"}
)
# Итоговый URL: .../search?q=New+York&lang=ru

Посмотреть итоговый URL

Иногда полезно проверить, какой URL собрал requests:

response = requests.get(url, params=params)
print(response.url)  # покажет полный URL с параметрами

Path-параметры vs Query-параметры

Есть два способа передать данные в URL:

Path-параметр — часть пути, обязателен:

/repos/torvalds/linux/issues
       │        │
       owner    repo

Query-параметр — после ?, обычно опционален:

/repos/torvalds/linux/issues?state=open&per_page=10

API-документация всегда указывает, какой тип используется для каждого параметра.

Итог

Элемент Пример Назначение
Схема https:// Протокол
Хост api.github.com Адрес сервера
Путь /user/repos Ресурс
Query-параметры ?sort=updated Фильтры и опции

Используй params= в requests вместо ручной сборки URL — это надёжнее и читаемее.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

API-ключи: что это и как с ними работать

Большинство публичных API требуют API-ключ — уникальную строку символов, которая идентифицирует тебя как пользователя сервиса.

📅 08.05.2026 👁️ 60
📝

Библиотека requests: HTTP-запросы из Python

requests — самая популярная Python-библиотека в мире. Более 300 миллионов загрузок в месяц. Она делает...

📅 08.05.2026 👁️ 45
📝

Как читать API-документацию

Документация API — главный инструмент разработчика. Умение её читать важнее, чем знать конкретный API наизусть:...

📅 08.05.2026 👁️ 49

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!