Что такое HTTP протокол и какие методы HTTP существуют
Что проверяют
Знаете ли вы устройство протокола и свойства методов: безопасность и идемпотентность.
Как отвечать
HTTP это текстовый протокол запроса и ответа поверх TCP, придуманный для передачи гипертекста. Он не хранит состояние между запросами: каждый запрос самодостаточен, а состояние держат cookie и токены. Именно это позволяет ставить несколько серверов за балансировщиком.
Запрос состоит из строки (метод, путь, версия), заголовков и необязательного тела. Ответ из строки статуса, заголовков и тела.
Методы:
- GET: получить. Безопасный, идемпотентный, кэшируемый;
- POST: создать или выполнить операцию. Не идемпотентный;
- PUT: заменить целиком. Идемпотентный;
- PATCH: изменить частично;
- DELETE: удалить. Идемпотентный;
- HEAD: заголовки без тела;
- OPTIONS: поддерживаемые методы, используется в предварительном запросе CORS.
Безопасный значит не меняет состояние на сервере, идемпотентный значит повтор не меняет результат. Практическая ценность прямая: повторить при таймауте можно идемпотентный запрос, а для POST нужен ключ идемпотентности, иначе будет двойная оплата.
Полезно добавить про версии: в HTTP/2 заголовки бинарные и сжимаются, запросы мультиплексируются в одном соединении, в HTTP/3 транспорт QUIC поверх UDP. Модель сообщения при этом не меняется.
Где спотыкаются
Меняют данные через GET.
Считают DELETE неидемпотентным из-за 404 на повторе.
Путают PUT и PATCH.
Не могут назвать ни одного заголовка кэширования.