Выбор ответа Senior Заголовки и cookies обновлено

Защита от потерянного обновления

Вопрос

Два менеджера открыли карточку товара с ETag: "7". Первый сохранил изменения, и версия стала "8". Второй отправляет PUT с If-Match: "7". Что должен ответить сервер, поддерживающий оптимистичную блокировку?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 412 Precondition Failed. If-Match говорит «применяй, только если версия всё ещё 7».

Варианты ответа

  1. 200 OK и перезаписать изменения первого
  2. 304 Not Modified
  3. 401 Unauthorized
  4. 412 Precondition Failedправильный ответ

Разбор

If-Match говорит «применяй, только если версия всё ещё 7». Версия уже 8, условие ложно, и сервер отвечает 412, не трогая данные. Без этой проверки второй менеджер молча затрёт работу первого (lost update): хороший сценарий для теста конкурентного редактирования. Иногда API возвращает 409 со своей версией в теле, но по стандарту HTTP для условных заголовков это 412.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.