Выбор ответа Middle HTTP: методы, статусы, заголовки обновлено
Почему PATCH не всегда идемпотентен
Вопрос
Клиент шлёт запрос и при таймауте автоматически повторяет его. Какой запрос опасно повторять?
// A
PUT /cart/items/42 {"qty": 3}
// B
DELETE /cart/items/42
// C
PATCH /cart/items/42 {"op": "increment", "by": 1}
// D
GET /cart
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: C. C увеличивает количество относительно текущего значения: два запроса дадут +2.
Варианты ответа
- A
- B
- Cправильный ответ
- D
Разбор
C увеличивает количество относительно текущего значения: два запроса дадут +2. PATCH не обязан быть идемпотентным, всё зависит от семантики операции. A задаёт абсолютное значение qty = 3, повтор ничего не меняет. B после первого удаления повтор оставит то же состояние. D только читает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.