📌 Шпаргалка по свойствам HTTP-методов: безопасность, идемпотентность, кэшируемость и тело JSON 📌
В англоязычной Wikipedia уже обновили таблицу свойств HTTP-методов: в ней появился новый метод QUERY, описанный в RFC 10008.
https://en.wikipedia.org/wiki/HTTP#Request_methods
Эта таблица — моя вечная шпаргалка для подготовки к собеседованиям.
Свойства методов из таблицы 👇
📤 Запрос может содержать тело — Request payload
Показывает, может ли запрос содержать данные в body.
Для POST, PUT, PATCH и QUERY тело является обычной частью запроса.
Для GET, HEAD и DELETE тело технически может быть передано, но его общая семантика стандартом не определена. Более того, некоторые серверы и промежуточные компоненты могут отклонить такой запрос.
📥 Ответ может содержать тело — Response payload
Показывает, может ли сервер вернуть данные в body.
Например, HEAD возвращает только заголовки.
У ответов 204 No Content и 304 Not Modified тела быть не должно.
🛡 Safe — безопасный
Метод считается безопасным, если клиент не запрашивает изменение состояния целевого ресурса.
Например:
▫️ GET получает данные
▫️ HEAD получает заголовки
▫️ QUERY получает данные
При этом логирование, сбор статистики и другие внутренние побочные действия сервера не делают метод небезопасным.
🔁 Idempotent — идемпотентный
Несколько одинаковых запросов должны иметь тот же ожидаемый эффект, что и один.
Например, первый DELETE может вернуть 204, а повторный — 404, но ресурс в обоих случаях удалён.
POST и PATCH по умолчанию не считаются идемпотентными.
🗄 Cacheable — кэшируемый
Ответ можно сохранить и повторно использовать по правилам HTTP-кэширования.
Это зависит от:
▫️ Cache-Control
▫️ клиента и сервера
▫️ CDN и прокси
▫️ реализации метода
Даже POST и PATCH могут кэшироваться при выполнении специальных условий. Спорные случаи лучше проверять по RFC.
Сохраняйте, если готовитесь к собеседованиям или изучаете HTTP и REST API 💙
#RestApiGA
📱 Tg | 💙 ВК | 💬 Max
Post #3539
3.6K

- 🔥 16
- ❤ 11