Введение в Requests
Requests — это простая и мощная библиотека для работы с HTTP-запросами в Python. Она обеспечивает удобный интерфейс для выполнения операций с REST API, загрузки данных с веб-страниц, а также отправки файлов и авторизации. Благодаря лаконичному синтаксису и широкому функционалу, Requests стала стандартом де-факто среди HTTP-клиентов Python.
Преимущества Requests по сравнению с urllib
-
Более читаемый синтаксис
-
Автоматическая обработка куки и редиректов
-
Удобная работа с JSON, заголовками, формами
-
Поддержка сессий, прокси, аутентификации
-
Поддержка всех методов HTTP: GET, POST, PUT, DELETE, PATCH
Установка и подключение библиотеки
Установка с помощью pip:
Импорт:
Отправка GET-запросов
Получение JSON:
Отправка POST-запросов
JSON-запрос:
Использование PUT, PATCH и DELETE
Работа с параметрами запроса
Заголовки и куки
Отправка и загрузка файлов
Отправка файла:
Сохранение полученного файла:
Обработка JSON и форм
Получение JSON:
Отправка формы:
Работа с сессиями
Сессии сохраняют куки и заголовки между запросами.
Обработка исключений и ошибок
Установка таймаутов и повторных попыток
Поддержка requests.adapters
для повторов:
Аутентификация: Basic, Token, OAuth
Basic Auth:
Token:
Прокси и SSL-сертификаты
Использование прокси:
Отключение проверки SSL:
Логирование и отладка запросов
Включение логов:
Позволяет отслеживать отправленные и полученные данные при отладке API.
Примеры практического применения
-
Интеграция с внешними API
-
Мониторинг сервисов
-
Скрипты автоматизации
-
Отправка уведомлений в Telegram, Slack
-
Агрегация данных из веб-источников
-
Валидация REST-сервисов
Часто задаваемые вопросы
Что такое Requests?
Это библиотека Python для выполнения HTTP-запросов с простым и удобным интерфейсом.
Поддерживает ли Requests SSL?
Да, по умолчанию. Можно отключить с помощью verify=False
.
Поддерживает ли Requests асинхронность?
Нет, Requests — синхронная библиотека. Для асинхронной работы рекомендуется использовать aiohttp или httpx.
Как отправить файл через POST-запрос?
С помощью аргумента files
и метода open()
.
Как повторно использовать соединение?
Через requests.Session()
.
Полный справочник по ключевым функциям библиотеки requests
для Python
Установка
Основные HTTP-запросы
Метод | Описание |
---|---|
requests.get(url, params=None) |
Отправка GET-запроса. |
requests.post(url, data=None, json=None) |
POST-запрос с телом (формы или JSON). |
requests.put(url, data=...) |
Замена ресурса (PUT-запрос). |
requests.delete(url) |
Удаление ресурса. |
requests.head(url) |
Получение только заголовков. |
requests.patch(url, data=...) |
Частичное обновление ресурса. |
Параметры запроса
Отправка данных
POST c data
(form-encoded):
POST с json
(автоматическая сериализация):
Заголовки
Работа с ответом
Атрибут | Описание |
---|---|
response.status_code |
Код ответа (например, 200 , 404 ). |
response.text |
Тело ответа в виде строки. |
response.content |
Тело ответа в байтах. |
response.json() |
Преобразует тело в словарь (если ответ JSON). |
response.headers |
Заголовки ответа (словарь). |
response.url |
Финальный URL после редиректа. |
response.cookies |
Полученные куки. |
Работа с куки
Сессии
Сессия сохраняет куки и повторно использует соединения:
Таймауты
Обработка ошибок
Загрузка файлов
Загрузка с передачей файлов
Аутентификация
Метод | Пример |
---|---|
BasicAuth | requests.get(url, auth=('user', 'pass')) |
Token | headers = {"Authorization": "Bearer <token>"} |