Ответ
В Python существует несколько способов для отправки HTTP-запросов, от высокоуровневых библиотек до низкоуровневых модулей стандартной библиотеки.
1. Библиотека requests (рекомендуемый способ)
requests — это де-факто стандарт для работы с HTTP в Python. Она предоставляет простой и интуитивно понятный API для большинства задач.
Преимущества:
- Простой синтаксис
- Автоматическая обработка JSON
- Управление сессиями, cookies и аутентификацией
Пример GET-запроса:
import requests
try:
response = requests.get('https://api.github.com/events')
response.raise_for_status() # Вызовет исключение для кодов 4xx/5xx
print(f"Статус-код: {response.status_code}")
print("Данные:", response.json()[0])
except requests.exceptions.RequestException as e:
print(f"Ошибка запроса: {e}")
2. Модули стандартной библиотеки (http.client и urllib)
Эти модули встроены в Python и не требуют установки. Они более низкоуровневые и могут быть полезны, когда нет возможности установить внешние зависимости.
urllib.request: более высокоуровневый модуль, чемhttp.client.from urllib.request import urlopen import json
with urlopen('https://api.github.com/events') as response: body = response.read() data = json.loads(body) print(f"Статус-код: {response.status}")
- **`http.client`**: предоставляет низкоуровневый контроль над HTTP-соединением.
```python
from http.client import HTTPSConnection
import json
conn = HTTPSConnection("api.github.com")
# Необходимо вручную установить заголовок User-Agent для API GitHub
headers = {'User-Agent': 'Python-App'}
conn.request("GET", "/events", headers=headers)
response = conn.getresponse()
data = json.loads(response.read().decode("utf-8"))
print(f"Статус-код: {response.status}")
conn.close()
Итог: Для большинства повседневных задач requests является лучшим выбором из-за своей простоты и функциональности. urllib и http.client используются в специфических случаях, например, при написании кода для стандартной библиотеки без внешних зависимостей.