Сравнение HTTP-методов
HTTP-методы играют ключевую роль в веб-коммуникации. Они определяют действия, выполняемые с ресурсами на сервере.
Дудник Н.В.
Ссылки на ресурсы:
Безопасные методы

1

GET
Запрашивает представление ресурса. Не изменяет состояние на сервере.

2

HEAD
Аналогичен GET, но возвращает только заголовки ответа без тела.

3

OPTIONS
Запрашивает информацию о возможных методах, поддерживаемых на сервере.
Небезопасные методы

1

POST
Отправляет данные на сервер для создания нового ресурса или обработки данных.

2

PUT
Полностью заменяет ресурс по указанному URI. (Предназначен для создания новой или полного обновления существующей сущности)

3

DELETE
Удаляет ресурс по указанному URI.

4

PATCH
Частично изменяет ресурс по указанному URI.
Идемпотентность
Метод HTTP является идемпотентным, если повторный идентичный запрос, сделанный один или несколько раз подряд, имеет один и тот же эффект, не изменяющий состояние сервера.
Определение от коллеги - пост в телеграм
Идемпотентные методы
GET, HEAD, OPTIONS
Повторные запросы не изменяют состояние ресурса.
PUT, DELETE
Повторный вызов не изменяет результат после первого выполнения.
PATCH
Частично идемпотентен, зависит от применения изменения.
Методы PUT и DELETE по определению идемпотентны.
Есть нюансы:
Успешный DELETE-запрос возвращает статус 200 (OK) или 204 (No Content), но для последующих запросов будет всё время возвращать 404 (Not Found), если только сервис не сконфигурирован так, чтобы "помечать" ресурс как удалённый без его фактического удаления. Состояние на сервере после каждого вызова DELETE то же самое, но ответы разные. (источник)
Хочу добавить про метод PUT, этот метод порой создает новый ресурс и при каждой отправке запроса может создавать новый объект и является неидемпотентным, например, на сайте vikunja, это создание объектов проекта, задачи и т.д.
Методы GET, HEAD, OPTIONS и TRACE определены как безопасные, что также делает их идемпотентными.
Неидемпотентные методы
POST
Неидемпотентен, так как повторные вызовы могут создавать новые ресурсы или изменять данные каждый раз.
Нюанс:
Метод POST запрос может быть идемпотентным в случае, когда пользователь уже существует, и чтоб не было дубликата пользователя, в ответе от сервера будет ошибка и при повторной отправке с тем же значениями каждый раз будет сообщение об ошибке. Также примеры из сайта vikunja: При регистрации пользователя возникает ошибка, то есть при каждой отправке запроса будет в ответе от сервера текст ошибки об существующих значениях почты или имени пользователя.
Кэшируемые методы
GET
Результат можно сохранить и повторно использовать.
HEAD
Возвращает заголовки, связанные с ресурсом, как и GET.
Источник

MDN Web Docs

Кешируемые методы - Глоссарий MDN Web Docs: определения веб-терминов | MDN

Кешируемые ответы - это HTTP-ответы, которые могут быть закешированы, то есть сохранены для дальнейшего восстановления и использования позже, тем самым снижая число запросов к серверу. Не все HTTP-ответы могут быть закешированы. Вот несколько ограничений:

Некэшируемые методы
1
PUT
Изменяет полностью состояние существующего ресурса или создает новый ресурс, поэтому обычно некэшируем.
2
DELETE
Удаляет ресурс, что делает его некэшируемым.
3
POST
Создает новый ресурс, Обычно некэшируемый, но может быть кэшируемым при определенных условиях, если указан признак "свежести" данных и установлен заголовок Content-Location, но это редко реализуется.
4
PATCH
Частично изменяет ресурс, поэтому также некэшируем, хотя если указан признак "свежести" данных и установлен заголовок Content-Location, но это редко реализуется.
Сравнительная таблица HTTP-методов
Литература

Habr

Простым языком об HTTP

Вашему вниманию предлагается описание основных аспектов протокола HTTP — сетевого протокола, с начала 90-х и по сей день позволяющего вашему браузеру загружать веб-страницы. Данная статья написана для...

MDN Web Docs

Методы HTTP запроса - HTTP | MDN

HTTP определяет множество методов запроса, которые указывают, какое желаемое действие выполнится для данного ресурса. Несмотря на то, что их названия могут быть существительными, эти методы запроса иногда называются HTTP глаголами. Каждый реализует свою семантику, но каждая группа команд разделяет общие свойства: так, методы могут быть безопасными, идемпотентными или кешируемыми.

ru.w3docs.com

Методы HTTP запроса - W3Docs

HTTP методы используются для описания действий с ресурсами. Наиболее часто используемыми являются методы GET и POST.

Спасибо за внимание
Свои вопросы пишите на @nadin_qa
Made with Gamma