Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
HTTP: HyperText Transfer Protocol
HTTP расшифровывается как HyperText Transfer Protocol — протокол прикладного уровня для передачи данных в интернете. Это основа всемирной паутины.
Разбор по словам
HyperText — гипертекст, текст с ссылками на другие документы Transfer — передача данных между клиентом и сервером Protocol — набор правил и соглашений коммуникации
История версий
HTTP/0.9 (1991) — Первая версия, очень простая, только GET
HTTP/1.0 (1996) — Добавлены заголовки, статус коды, методы
HTTP/1.1 (1997) — Persistent connections, Keep-Alive, виртуальные хосты
HTTP/2 (2015) — Двоичный формат, multiplexing, сжатие заголовков
HTTP/3 (2022) — На основе QUIC, улучшенная обработка потери пакетов
Как работает HTTP
Клиент отправляет Request:
GET /api/users HTTP/1.1
Host: api.example.com
User-Agent: python-requests/2.28.0
Accept: application/json
Сервер отправляет Response:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 100
{"users": []}
Методы HTTP
GET — Получить ресурс (безопасный, идемпотентный)
requests.get('/users/123')
POST — Создать новый ресурс (не идемпотентный)
requests.post('/users', json={'name': 'Alice'})
PUT — Полностью заменить ресурс (идемпотентный)
requests.put('/users/123', json={'name': 'Bob'})
PATCH — Частично обновить ресурс
requests.patch('/users/123', json={'name': 'Charlie'})
DELETE — Удалить ресурс (идемпотентный)
requests.delete('/users/123')
HEAD — Как GET, но без тела ответа
OPTIONS — Узнать, какие методы поддерживает ресурс
Статус коды
2xx — Успех
- 200 OK
- 201 Created
- 204 No Content
3xx — Редирект
- 301 Moved Permanently
- 302 Found
- 304 Not Modified
4xx — Ошибка клиента
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
- 429 Too Many Requests
5xx — Ошибка сервера
- 500 Internal Server Error
- 502 Bad Gateway
- 503 Service Unavailable
Заголовки (Headers)
Запроса:
- Host: адрес сервера
- User-Agent: информация о клиенте
- Accept: какие форматы принимает клиент
- Authorization: учётные данные
- Content-Type: тип данных в теле
Ответа:
- Content-Type: тип возвращаемых данных
- Content-Length: размер ответа
- Cache-Control: инструкции кэширования
- Set-Cookie: установка cookies
HTTP vs HTTPS
HTTP — незащищённый протокол (портов 80)
- Данные передаются в открытом виде
- Любой может перехватить пароли и токены
HTTPS — защищённый HTTP с TLS/SSL (порт 443)
- Данные шифруются
- Сертификат подтверждает подлинность сервера
- Обязателен для продакшена
Важные концепции
Idempotency — результат одинаковый при повторных вызовах
- GET, PUT, DELETE — идемпотентные
- POST — не идемпотентный
Statelessness — каждый запрос независим, сервер не помнит состояние
Кэширование — запросы кэшируются для оптимизации
Примеры Python
Простой GET:
import requests
response = requests.get('https://api.example.com/users')
print(response.status_code) # 200
print(response.json())
POST с данными:
response = requests.post(
'https://api.example.com/users',
json={'name': 'Alice'},
headers={'Authorization': 'Bearer token'}
)
print(response.status_code) # 201
Обработка ошибок:
try:
response = requests.get('https://api.example.com/users/999')
response.raise_for_status()
except requests.exceptions.HTTPError:
print('HTTP ошибка')
except requests.exceptions.RequestException:
print('Ошибка подключения')
Выводы
HTTP — это протокол, на котором строится весь интернет. Разработчик должен понимать:
- Как работает: Request → Server → Response
- Методы: GET, POST, PUT, PATCH, DELETE
- Статус коды и их значения
- Заголовки и их роль
- Разница HTTP и HTTPS
- Концепции идемпотентности и statelessness
Без глубокого понимания HTTP невозможно писать качественные веб-приложения.