📝 API

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

P
Автор
PyLand Team
📅
Опубликовано
08.05.2026
⏱️
Время чтения
2 мин
👁️
Просмотров
341
🌿
Уровень
Средний

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

Установка

pip install requests

На CodeHS библиотека уже установлена.

Базовый GET-запрос

import requests

response = requests.get("https://api.chucknorris.io/jokes/random")

print(response.status_code)  # 200
print(response.text)         # сырой текст ответа
print(response.json())       # Python-словарь (если ответ — JSON)

Параметры и ответ

Параметры запроса (params)

Параметры передаются словарём — requests сам соберёт правильный URL:

# Плохо — ручная сборка URL:
url = f"https://api.chucknorris.io/jokes/random?category={category}"

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

Если в значении параметра есть спецсимволы (&, /, пробелы) — params= автоматически их экранирует. Ручная сборка в таком случае сломается.

timeout — всегда указывай

response = requests.get(url, timeout=10)
# Если сервер не ответил за 10 секунд — выбросит Timeout

Без timeout программа может зависнуть навсегда. В production-коде timeout обязателен.

response.json() vs response.text vs response.content

response = requests.get(url)

response.status_code   # число: 200, 404, 401...
response.text          # строка — сырой текст ответа
response.json()        # Python-словарь/список (парсит JSON)
response.content       # bytes — бинарные данные (изображения, файлы)
response.headers       # словарь заголовков ответа

raise_for_status()

Автоматически выбрасывает HTTPError если статус >= 400:

response = requests.get(url)
response.raise_for_status()  # ничего не делает при 200, падает при 4xx/5xx
data = response.json()

Удобнее чем if response.status_code != 200: raise ....

Отправка данных

POST-запрос с телом

response = requests.post(
    "https://api.github.com/user/repos",
    headers={"Authorization": "Bearer TOKEN"},
    json={"name": "my-repo", "private": False},  # тело запроса
)

json= автоматически:
- Сериализует словарь в JSON
- Добавляет заголовок Content-Type: application/json

PATCH и другие методы

requests.patch(url, headers=headers, json={"state": "closed"})
requests.delete(url, headers=headers)
requests.put(url, headers=headers, json={...})

# Или универсально:
requests.request("PATCH", url, headers=headers, json={...})

Заголовки (headers)

headers = {
    "Authorization": "Bearer my_token",
    "Accept": "application/json",
}
response = requests.get(url, headers=headers)

Дополнительные возможности

Обработка ошибок

try:
    response = requests.get(url, timeout=10)
    response.raise_for_status()
    return response.json()
except requests.exceptions.ConnectionError:
    print("Нет интернета")
except requests.exceptions.Timeout:
    print("Сервер не ответил")
except requests.exceptions.HTTPError as e:
    print(f"HTTP ошибка: {e.response.status_code}")

Скачивание файла

response = requests.get(image_url, timeout=30)
response.raise_for_status()

with open("photo.jpg", "wb") as f:
    f.write(response.content)  # content — bytes, не text

Итог

Что делаешь Как
GET-запрос requests.get(url, params={}, timeout=10)
POST-запрос requests.post(url, json={}, headers={})
Статус ответа response.status_code
JSON-данные response.json()
Автопроверка статуса response.raise_for_status()
Бинарные данные response.content

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

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

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

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

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

🔗 Похожие

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

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

📝

Принципы проектирования REST API

Охватываемые темы: Ресурсы и URL, HTTP методы, Вложенные ресурсы, Коды ответов.

📅 30.06.2026 👁️ 273
📝

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

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

📅 08.05.2026 👁️ 374
📝

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

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

📅 08.05.2026 👁️ 357
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

API на практике: взаимодействие с любыми сервисами Открыть программу курса