Как правильно рассматривать идемпотентность с точки зрения HTTP DELETE?

Недавно я потратил много времени на чтение спецификации HTTP 1.1 и связал ее с REST. Я обнаружил, что существует две интерпретации метода HTTP DELETE в отношении его «идемпотентности» и безопасности. Вот два лагеря:

Если вы удаляете ресурс с помощью HTTP DELETE, и он успешно (200 OK), а затем вы пытаетесь удалить этот ресурс N раз, вы должны получить сообщение об успешном завершении (200 OK) для каждого из этих вызовов удаления , Это его "идемпотентность".

Если вы удаляете ресурс с помощью HTTP DELETE, и он успешно (200 OK), а затем вы пытаетесь удалить этот ресурс снова, вы должны получить сообщение об ошибке (410 Gone), потому что ресурс был удален.

Спецификация говорит, что DELETE является идемпотентным, конечно, но она также говорит, что последовательности идемпотентных событий все еще могут вызывать побочные эффекты. Я действительно чувствую, что второй лагерь правильный, а первый вводит в заблуждение. Какую «безопасность» мы внедрили, позволив клиентам думать, что они стали причиной удаления ранее удаленного ресурса?

В первом лагере много людей, в том числе несколько авторов на эту тему, поэтому я хотел проверить, была ли какая-то убедительная причина, кроме эмоций, которые приводят людей в первый лагерь.

Ответы на вопрос(3)

Ваш ответ на вопрос