📝 Python

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

0
Author
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Published
08.05.2026
⏱️
Reading time
1 min
👁️
Views
21
🌱
Level
Beginner

Каждый 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 — это надёжнее и читаемее.

Your reaction to the article

💬 Comments (0)

🔐 Sign in to leave a comment
🚪 Login
💭

No comments yet

Be the first to share your opinion about this article!

🔗 Similar

Similar articles

Continue learning with these materials

📝

Модуль datetime: работа с датами и временем

datetime — стандартный модуль Python для работы с датами и временем. Входит в стандартную библиотеку,...

📅 08.05.2026 👁️ 30
📝

.env файлы и переменные окружения: секреты вне ко…

Представь что ты написал программу с API-ключом прямо в коде и залил её на GitHub....

📅 08.05.2026 👁️ 35
📝

Виртуальные окружения в Python: зачем и как

Когда начинаешь второй Python-проект и ставишь pip install requests — эта библиотека устанавливается глобально, для...

📅 08.05.2026 👁️ 31

Did you like the article?

Subscribe to our updates and receive new articles first. Grow with PyLand!