Рассмотрим следующий грубозернистый REST apis для ресурса контакта
POST /api/contacts
GET /api/contacts
GET /api/contacts/:id
PUT /api/contacts/:id
DELETE /api/contacts/:id
Рассмотрим использование eventourcing для ресурса контакта, то есть команды проверяются и сохраняются события. Поэтому каждое событие должно быть сохранено, включая изменение каждого уровня поля.
CreateContactCommand -> | Contact("john", "doe", 25) | -> ContactCreatedEvent
FirstNameChangeCommand -> | Contact("jane", "doe", 25) | -> FirstNameChangedEvent
LastNameChangeCommand -> | Contact("jane", "dear", 25) | -> LastNameChangedEvent
AgeChangeCommand -> | Contact("jane", "doe", 30) | -> AgeChangedEvent
Теперь, комбинируя REST и EventSourcing как.
Выполнение REST, как клиент взаимодействует с вышеуказанными стандартными API-интерфейсами REST для изменений на уровне поля для генерации команд на конечной точке REST на стороне сервера?
Основной вопрос: как создать REST API так, чтобы он также мог поддерживать команды, в конечном счете поддерживающие eventourcing?
Если кто-нибудь может пролить свет на это, помощь будет принята с благодарностью.