Урок 05 из 8 · 3 минуты чтения

HTTP и HTTPS — методы, коды ответа, версии

Методы и идемпотентность, группы кодов ответа, REST, отличия HTTP/1.1, HTTP/2 и HTTP/3, как HTTPS защищает соединение.

Запрос и ответ

HTTP — текстовый протокол «запрос — ответ». Запрос состоит из метода, пути, заголовков и необязательного тела:

POST /api/orders HTTP/1.1
Host: shop.example.ru
Content-Type: application/json
Authorization: Bearer eyJ...

{"productId": 42, "count": 2}

Ответ — код статуса, заголовки и тело.

Методы

МетодЧто делаетИдемпотентен
GETполучитьда
POSTсоздать или отправитьнет
PUTзаменить целикомда
PATCHизменить частичноне обязательно
DELETEудалитьда

GET передаёт параметры в URL и не должен менять данные. Идемпотентный метод при повторе даёт тот же эффект, что и один вызов. Отсюда важный тест: двойной клик по кнопке «Оформить» не должен создавать два заказа — POST сам по себе от этого не защищает.

Коды ответа

ГруппаСмыслЧастые
2xxуспех200, 201 Created, 204 No Content
3xxперенаправление301, 302, 304 Not Modified
4xxошибка клиента400, 401, 403, 404, 409, 422, 429
5xxошибка сервера500, 502, 503, 504

401 — не аутентифицирован: «кто вы?». 403 — известно, кто вы, но нельзя. 4xx подсказывает, что проблема в запросе, 5xx — на сервере. Это первое, что смотрят в DevTools на вкладке Network, когда ищут, на чьей стороне ошибка.

REST

REST — стиль проектирования API поверх HTTP: ресурсы адресуются URL, действия выражаются методами, сервер не хранит состояние клиента между запросами.

GET    /orders/42     — получить заказ
POST   /orders        — создать
DELETE /orders/42     — удалить

В пути — существительные: /orders/42, а не /getOrder?id=42. Коды ответа и заголовки кэширования несут смысл, а не просто «200 и текст ошибки в теле».

Версии HTTP

  • HTTP/1.1 — текст, один запрос за раз в соединении. Чтобы распараллелить загрузку, браузер открывает около шести соединений на домен.
  • HTTP/2 — бинарные кадры и много потоков в одном TCP-соединении, сжатие заголовков. Блокировка на уровне HTTP ушла, но осталась на уровне TCP: потеря одного пакета задерживает все потоки.
  • HTTP/3 — то же поверх QUIC (UDP): потеря пакета задерживает только свой поток, TLS 1.3 встроен, соединение переживает смену сети.

Методы, коды и заголовки во всех версиях одинаковы.

HTTPS

HTTPS — HTTP поверх TLS. TLS даёт три вещи: шифрование, целостность и подлинность сервера. В рукопожатии стороны договариваются об общем ключе, а сервер доказывает владение сертификатом. Браузер проверяет цепочку сертификата до доверенного корневого центра и совпадение имени домена. Дальше данные шифруются быстрым симметричным шифром: асимметрия нужна, чтобы договориться о ключе, симметрия — чтобы быстро шифровать.

TLS 1.3 тратит на рукопожатие один оборот, а при повторном подключении — ноль.

Что запомнить

  • GET читает, POST создаёт; PUT и DELETE идемпотентны, POST — нет.
  • 4xx — проблема в запросе, 5xx — на сервере; 401 и 403 — разное.
  • REST — ресурсы в URL, действия в методах.
  • HTTP/2 — много потоков в одном соединении, HTTP/3 — поверх QUIC.
  • HTTPS — шифрование, целостность и подлинность сервера.

Проверка урока

Войдите, чтобы проверить себя: сданные проверки всех уроков курса отмечают его темы пройденными на карте и в ИПР.

Вопросы по теме

Читайте также

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования