Я разрабатываю REST API, в котором два клиента будут обновлять его, возможно, одновременно: * Client A
получит документ, потратит несколько минут на его обработку и изменение, а затем вернет его обратно.* Client B
может в любое время поставить новый документ.
Проблема возникает, когда новый документ Client B
PUT при Client A
обрабатывает старую версию документа.В этом случае Client A
в конечном итоге переопределит внесенные Client B
изменения путем PUT'а модифицированной версии старого документа.Я хотел бы, чтобы Client A
отбросил результат обработки.
Чтобы объяснить это лучше, вот пример простого (проблемного) рабочего процесса:
Client A
GET <-Версия документа 1 </li> Client B
PUT -> Версия документа 2 Client A
PUT -> Версия документа 1.1
Требуемый рабочий процесс:
Client A
GET <- Версия документа 1 </li> Client B
PUT -> Версия документа 2 Client A
PUT -> Ошибка.Client A
отбрасывает результаты и перезапускает Client A
GET <- Версия документа 2 </li> Client A
PUT -> Версия документа 2.1
Очевидно, этоможет быть достигнуто версионированием документов каким-либо образом.Мой вопрос заключается в том, существует ли какой-то стандартный способ достижения этого (я уверен, что я не единственный, кто сталкивается с такой проблемой), или мне следует разработать собственное решение.