2013-04-07 1 views
1

В API REST агент отправляет запрос DELETE/some-resource/666Следует ли удалять операции с учетом оптимистической блокировки?

Должно ли быть достаточно? Или они должны отправлять идентификатор ресурса, а также версию (используемую для оптимизации блокировки), чтобы они могли убедиться, что они удаляют версию, которую они читают?

ответ

1

Это сильно зависит от контекста.

  • Если ваш ресурс id является сервером сгенерированных и всегда уникален (например, это может быть, что POST /some-resource возвращает новый id, который является GUID для ресурса или столбец SQL автоинкремента), то вы, конечно, дон Не нужно указывать какие-либо конкретные version для удаления и DELETE /some-resource/{id}.

  • Если ваш ресурс id является клиентским или уникальным только из существующих ресурсов (повторяемый), вы можете добавить параметр запроса version, как вы предлагаете.

    • вопрос вы должны спросить, хотя: если у вас есть не уникальные или повторяющиеся id значения, вы можете легко сделать их вместо того, чтобы всегда уникален? Если это так, предпочтете это решение для параметра version на DELETE.
+3

В первом случае, я бы сказал, что определение версии также полезно, чтобы убедиться, что запись о том, что пользователь хочет удалить все еще находится в том же состоянии, как пользователь в последний раз видел его. Если это не так (т. Е. Это изменилось тем временем, возможно, кем-то другим), то, возможно, пользователь больше не хочет его удалять! –

+0

Возможно, правильным ответом является использование как не повторяющегося идентификатора (для обеспечения того, чтобы пользователь удалял правильный объект - объект мог быть удален и снова создан другим пользователем), так и поле версии (чтобы убедиться, что пользователь удаляет объект, когда он имеет то же состояние, что и в последний раз, когда он его извлекал). –

 Смежные вопросы

  • Нет связанных вопросов^_^