Оптимистическая блокировка: изменение ресурса с использованием других ресурсов - PullRequest
0 голосов
/ 12 декабря 2018

Пример использования : пользователь изменяет рецепт приготовления (ресурс C), используя фактический список продуктов (ресурс LP / список ресурсов P).Оба ресурса C и LP могут быть изменены другими пользователями одновременно.Любой продукт в списке (P) также может быть изменен.Если какой-либо из этих ресурсов был изменен, клиент должен иметь соответствующие ошибки в ответ на изменение PUT.

Вопрос : Каковы оптимальные методы обеспечения того, чтобы пользователь использовал неизменные данные при изменении рецепта?Можем ли мы использовать метод ETag (RFC 7232) для обеспечения соблюдения правил одновременного доступа?Если нет, как мы можем изменить структуру API или использовать другой метод для ее реализации?Моя проблема в том, как я могу использовать ETag из нескольких ресурсов для обеспечения RFC.

И я понимаю, что в данном конкретном случае мы можем просто использовать POST для добавления продуктов по одному и т. Д. Но в реальной жизниэто могут быть сложные случаи, например, сборщик из нескольких коллекций или ресурсов.

1 Ответ

0 голосов
/ 12 декабря 2018

Да, пожалуйста, сделайте это!Вам необходимо сравнить ETag, который передается как часть запроса (в заголовке If-Match), с ETag текущего представления сервера.Если они совпадают, продолжайте и обновите значение.Если они этого не делают, верните 412 Precondition Failed.

...