Идемпотентность HTTP запросов
Я так понял, что запрос называется идемпотентным, если мы зафиксировали состояние сервера, после чего шлем запросы, если несколько запросов подряд возвращают одинаковый результат - то метод называется идемпотентным.
Метод GET
по очевидным причинам идемпотентный, а метод POST
- нет, потому что каждый раз будет создан новый объект с другим идентификатором.
Тогда возникает другой вопрос, почему метод DELETE
идемпотентный? Ведь если у нас изначально была запись, то в первый запрос мы ее удалим, а во второй уже будет возвращена ошибка. И где же тут одинаковый результат?
И, дополнительно, почему метод PATCH
неидемпотентный? Здесь казалось бы, обратная ситуация, мы новый объект не создаем, а изменяем имеющийся, значит при изменении одного атрибута мы всегда будем получать один и тот же объект с измененным атрибутом.
Почему так?