Является ли HTTP-метод PATCH идемпотентным?

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

Ответ

Нет, метод PATCH не является идемпотентным по умолчанию. Его идемпотентность полностью зависит от типа применяемых изменений (операций), описанных в теле запроса.

Почему:

  • Неидемпотентные операции: Инкремент, добавление в массив. Повторение запроса изменяет результат.

    PATCH /users/1
    {"op": "increment", "path": "/age", "value": 1}

    Каждый вызов увеличит возраст на 1.

  • Идемпотентные операции: Установка конкретного значения, замена. Повторение запроса не меняет конечное состояние.

    PATCH /users/1
    {"op": "replace", "path": "/age", "value": 30}

    Многократный вызов установит возраст в 30, результат не изменится.

Best Practice: Для гарантированной идемпотентности используйте формат JSON Patch (RFC 6902) с операциями replace, set или remove для конкретных значений, либо применяйте метод PUT для полной замены ресурса.