В настоящее время я придерживаюсь проектирования своих конечных точек таким образом, чтобы они соответствовали принципам REST, а также гарантировали целостность базовых данных.Преобразование ресурсов в RESTful способ
У меня есть два ресурса: ShadowUser
и RealUser
, тогда как первый имеет только имя, фамилию и адрес электронной почты. Второй пользователь имеет гораздо больше свойств, таких как идентификатор, под которым реальный пользователь может быть обращен в другом месте в системе.
My use-case это для преобразования конкретных ShadowUser
s в реальных пользователей.
В моей голове поток кажется довольно простым:
- получить теневые пользователь/GET апи/ShadowUsers somePropery = SomeValue
- создавать новые реальные пользователь с данными извлекаемого/POST API/RealUsers ?
- удалить теневые пользователей/DELETE API/ShadowUSers? somePropery = SomeValue
Но что происходит, когда есть проблема между созданием новых пользователей и удаление теневых них ? Теперь данные будут непоследовательными. Пример еще проще, когда есть только один пользователь, но проблема остается такой же, как между шагами 2 и 3 может быть что-то, оставляя пользователя существующим как теневое и реальное.
Итак, вопрос в том, как это можно сделать «транзакционным» образом, когда что-то хорошее и сохраняется, или что-то пошло не так, и ничего не изменилось в базовом хранилище данных?
Есть ли какие-либо «лучшие практики» или «шаблоны дизайна», которые можно использовать?