Защита от потерянного обновления
Вопрос
Два менеджера открыли карточку товара с ETag: "7". Первый сохранил изменения, и версия стала "8". Второй отправляет PUT с If-Match: "7". Что должен ответить сервер, поддерживающий оптимистичную блокировку?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- 200 OK и перезаписать изменения первого
- 304 Not Modified
- 401 Unauthorized
- 412 Precondition Failedправильный ответ
Разбор
If-Match говорит «применяй, только если версия всё ещё 7». Версия уже 8, условие ложно, и сервер отвечает 412, не трогая данные. Без этой проверки второй менеджер молча затрёт работу первого (lost update): хороший сценарий для теста конкурентного редактирования. Иногда API возвращает 409 со своей версией в теле, но по стандарту HTTP для условных заголовков это 412.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.