- Метод post() модуля requests в Python
- Что такое HTTP-запрос в Python?
- Ключевые моменты POST-запроса
- Что такое модуль запросов Python?
- Как использовать модуль requests в Python?
- Что такое метод requests.post() в Python?
- Синтаксис
- Параметры
- Библиотека Requests для Python: код и практика
- Почему стоит выбрать Requests?
- HTTP-заголовки в ответе
- HTTP-методы в Python
- Python Requests: параметры запроса
- Requests и аутентификация HTTP
- Контролируем выполнение запросов с помощью класса Session
- Что дальше?
Метод post() модуля requests в Python
Метод post() используется, когда мы хотим отправить какие-то данные на сервер. Затем данные сохраняются в базе данных.
Что такое HTTP-запрос в Python?
POST отправляет данные на сервер для создания ресурса. Данные, отправленные на сервер с запросом POST, хранятся в теле запроса HTTP.
Ключевые моменты POST-запроса
- Запросы POST не имеют ограничений по длине данных. Это может быть все, что вы хотите.
- POST-запросы не сохраняются в истории браузера.
- Никогда не кэшируются.
- Не могут быть добавлены в закладки.
Что такое модуль запросов Python?
Requests — это HTTP-библиотека под лицензией Apache2, написанная на Python, которая помогает сделать HTTP-запросы более простыми и удобными для человека.
Как использовать модуль requests в Python?
Вам необходимо установить модуль запросов в вашей системе, чтобы использовать его в Python. Чтобы установить модуль requests, выполните следующую команду.
Чтобы использовать Pipenv для управления пакетами Python, вы можете запустить следующую команду.
После установки библиотеки запросов вы можете использовать ее в своем приложении. Например, импорт запросов выглядит следующим образом.
Что такое метод requests.post() в Python?
Чтобы создать запрос POST в Python, используйте метод request.post(). Метод запросов post() принимает URL-адреса, данные, json и аргументы в качестве аргументов и отправляет запрос POST на указанный URL-адрес.
Вы можете отправить данные вместе с post-запросом.
Синтаксис
Параметры
Параметр | Описание |
---|---|
url | обязателен, URL-адрес запроса. |
data | необязателен. Это может быть словарь, список кортежей, байты или файловый объект для отправки по указанному url. |
json | необязательно. Это объект JSON для отправки по указанному URL. |
files | необязательно. Это словарь файлов для отправки по указанному url. |
allow_redirects | необязательно. Это логическое значение для включения/отключения перенаправления. Значение по умолчанию True (разрешает перенаправление) |
auth | необязательно. Это кортеж для включения безопасной аутентификации по протоколу HTTP. По умолчанию None |
cert | необязательно. Это строка или кортеж, указывающий файл сертификата или ключ. По умолчанию None |
cookies | необязательно. Это словарь файлов cookie для отправки по указанному url-адресу. По умолчанию None |
headers | необязательно. Это словарь HTTP-заголовков для отправки по указанному URL. По умолчанию None |
proxies | необязательно. Это словарь протокола для URL-адреса прокси-сервера. По умолчанию None |
stream | необязательно. Логическое значение показывает, должен ли ответ быть немедленно загружен (False) или передан потоком (True). Значение по умолчанию False |
timeout | необязательно. Это кортеж, или число, указывающее, сколько секунд требуется для ожидания, пока клиент установит соединение и отправит ответ. Аргумент по умолчанию равен None, что означает, что запрос будет продолжаться до тех пор, пока соединение не будет закрыто или потеряно. |
verify | необязательно. Это логическое значение или строковое указание для проверки наличия TLS-сертификата сервера или нет. Значение по умолчанию True |
Библиотека Requests для Python: код и практика
Разбираемся в методах работы с HTTP-запросами в Python на практике.
Иллюстрация: Катя Павловская для Skillbox Media
Библиотека Requests для Python позволяет работать с HTTP-запросами любого уровня сложности, используя простой синтаксис. Это помогает не тратить время на написание кода, а быстро взаимодействовать с серверами.
Почему стоит выбрать Requests?
Python Requests — это библиотека, которая создана для быстрой и простой работы с запросами. Стандартные HTTP-библиотеки Python, например та же Urllib3, часто требуют значительно больше кода для выполнения одного и того же действия, а это затрудняет работу. Давайте сравним код для простой задачи, написанный с помощью Urllib3 и Requests.
Информацию из байтового вида в строковый можно декодировать с помощью метода text:
В обоих случаях мы получаем классический JSON-текст, который можно использовать как словарь, получая доступ к нужным значениям по известному ключу.
HTTP-заголовки в ответе
Заголовки ответа — важная часть запроса. Хотя в них и нет содержимого исходного сообщения, зато там можно обнаружить множество важных деталей ответа: информация о сервере, дата, кодировка и так далее. Для работы с ними используется метод headers:
Зачем это надо? Например, таким образом мы можем узнать дату и время на сервере в момент получения запроса. В нашем случае ответ пришёл 9 марта в 05:45:28 GMT. Это помогает логировать действия для их последующей оценки, например, при поиске ошибок выполнения.
HTTP-методы в Python
Метод | Описание |
---|---|
GET | GET-метод используется для обычного запроса к серверу и получения информации по URL. |
POST | Метод запроса POST запрашивает веб-сервис для приёма данных, например для хранения информации. |
PUT | Метод PUT просит, чтобы вложенный в него объект был сохранён под определённым URI . Если URI ссылается на уже существующий ресурс, он модифицируется, а если URI указывает на несуществующий ресурс, сервер может создать новый ресурс с этим URI. |
DELETE | Метод DELETE удаляет объект с сервера. |
HEAD | Метод HEAD запрашивает ответ, идентичный запросу GET, но без тела ответа. |
PATCH | Метод используется для модификации информации на сервере. |
Python Requests: параметры запроса
Запрос GET можно настроить с помощью передачи параметров в методе params. Посмотрим, как это работает на простом примере — попробуем найти изображение на фотостоке Pixabay.
Для начала создадим переменную, которая будет содержать необходимые нам параметры:
Всё получилось. У нас правильно настроена сортировка и размеры изображений.
Requests и аутентификация HTTP
Аутентификацию используют в тех случаях, когда сервис должен понять, кто вы. Например, это часто необходимо при работе с API. Аутентификация в библиотеке Requests очень простая — для этого достаточно использовать параметр с именем auth. Попробуем написать код для доступа к API GitHub. Для него вам потребуются данные учётной записи на сервисе — логин и пароль. Поставьте их в нужные места кода:
Мы видим, что ответ на запрос содержит предупреждение о неверифицированном сертификате. Всё дело в том, что мы отключили его получение вручную в коде выше с помощью функции verify.
Контролируем выполнение запросов с помощью класса Session
Метод GET позволяет работать с запросами на высоком уровне абстракции, не разбираясь в деталях их выполнения, при этом надо настроить лишь базовые параметры.
Однако возможности библиотеки Requests на этом не заканчиваются: с помощью класса Session мы можем контролировать выполнение запросов и увеличивать скорость их выполнения.
Класс Session позволяет создавать сеансы — базовые запросы с сохранёнными параметрами (то есть без повторного указания параметров).
Напишем код для простой сессии, позволяющей получить доступ к GitHub:
Запрос возвращает информацию с сервера при этом работает с помощью session. То есть теперь нам не придётся вводить повторные параметры авторизации при следующих запросах.
Что дальше?
Библиотека Requests — простой инструмент для работы с HTTP-запросами разного уровня сложности. Рекомендуем подробно изучить возможности библиотеки, методы и примеры их использования в официальной документации.
Читайте также:
Uniform resource identifier, унифицированный идентификатор ресурса.