Дизайн Restful API: Как заблокировать записи в коллекции GET? - PullRequest
0 голосов
/ 21 февраля 2019

Идея

Использование платформы API-платформы. У меня есть случай, когда мне нужно «заблокировать доступ / просмотр» для наборов ресурсов для первогоклиент, который запросил их, предотвращая их повторный поиск другим клиентом (состояние гонки), пока первый не завершит / не обновит свой статус.Почему: потому что два клиента не могут обработать (например, электронное письмо клиенту) один и тот же купон, поскольку купоны можно использовать только 1 раз.

Пример

Представьте, что у нас естьсбор кодов купонов, используемых многими клиентами. После того как клиент запросит сбор кодов купонов, ни один другой клиент не сможет получить те же коды купонов, пока первый клиент не помечает (POST / PATCH) каждый код купона, например, «потребляется».

Задача

Конечно, я могу заблокировать эти купоны по запросу GET, но это противоречит парадигме Restful API: GET не может изменить состояние ресурса, предполагается, что Getбыть идемпотентным и безопасным.

Предложения

ETag оптимистическая блокировка : нельзя использовать в коллекциях.

...