Как работать с HTTP в Python?

«Как работать с HTTP в Python?» — вопрос из категории Сети, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Python для работы с HTTP чаще всего используются библиотеки requests и http.client.

requests — высокоуровневая библиотека, предпочтительная для большинства задач благодаря своей простоте и богатому функционалу (автоматическая обработка сессий, редиректов, кодировок).

Пример GET-запроса через requests:

import requests

# Выполнение GET-запроса к API
response = requests.get('https://api.example.com/data')

# Проверка статуса ответа и обработка данных
if response.status_code == 200:
    data = response.json() # Парсинг JSON-ответа
    print(data)
else:
    print(f"Ошибка: {response.status_code} - {response.text}")

Пример POST-запроса:

import requests

payload = {'key': 'value', 'another_key': 123}
# Отправка POST-запроса с JSON-данными
response = requests.post('https://api.example.com/submit', json=payload)
print(f"Статус ответа: {response.status_code}")
print(f"Тело ответа: {response.text}")

http.client — низкоуровневая библиотека, входящая в стандартную библиотеку Python, подходит для более детального контроля над HTTP-запросами, но требует больше кода.

Ключевые аспекты работы с HTTP в Python:

  • Обработка ошибок: Важно обрабатывать различные статусы HTTP (4xx, 5xx), таймауты и сетевые ошибки.
  • Сессии: Использование requests.Session() позволяет сохранять состояние между запросами (куки, заголовки) и повторно использовать TCP-соединения для повышения производительности.
  • Асинхронные запросы: Для высоконагруженных приложений и параллельной обработки запросов используются библиотеки вроде aiohttp.
  • Веб-скрейпинг: Для парсинга HTML-страниц часто применяются BeautifulSoup в сочетании с requests.
  • Безопасность: Работа с HTTPS, проверка SSL-сертификатов.