← Назад к вопросам

Расшифруй аббревиатуру HTTP

1.7 Middle🔥 201 комментариев
#REST API и HTTP

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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 — это протокол, на котором строится весь интернет. Разработчик должен понимать:

  1. Как работает: Request → Server → Response
  2. Методы: GET, POST, PUT, PATCH, DELETE
  3. Статус коды и их значения
  4. Заголовки и их роль
  5. Разница HTTP и HTTPS
  6. Концепции идемпотентности и statelessness

Без глубокого понимания HTTP невозможно писать качественные веб-приложения.