Является ли HTTP-метод DELETE идемпотентным? (Вопрос с опечаткой ‘DELITE’)

«Является ли HTTP-метод DELETE идемпотентным? (Вопрос с опечаткой ‘DELITE’)» — вопрос из категории API тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, HTTP-метод DELETE является идемпотентным по определению спецификации (RFC 7231).

Объяснение: Идемпотентность HTTP-метода означает, что побочные эффекты от N > 0 идентичных запросов должны быть такими же, как от одного запроса.

  • Теоретически (по спецификации): DELETE идемпотентен. После удаления ресурса последующие запросы не должны изменять состояние системы.
  • Практически: Поведение зависит от реализации сервера. Идемпотентность может нарушаться, если сервер:
    1. Возвращает разные коды состояния (например, 200 OK, затем 404 Not Found).
    2. Ведёт журнал или счётчик удалений, который увеличивается с каждым запросом.

Пример неидеальной реализации:

# Первый запрос
DELETE /items/1 -> 200 OK (ресурс удалён)
# Второй идентичный запрос
DELETE /items/1 -> 404 Not Found (ресурс не найден)

Хотя коды ответов разные, состояние ресурса (удалён) остаётся неизменным, что соответствует идемпотентности. Нарушением было бы, если бы второй запрос создавал ошибку 500 или восстанавливал ресурс.