考虑以下粗粒度的REST API,用于联系人资源
POST /api/contacts
GET /api/contacts
GET /api/contacts/:id
PUT /api/contacts/:id
DELETE /api/contacts/:id
考虑为联系资源使用事件溯源,即验证命令并存储事件。因此,每个事件都必须被存储,包括每个字段级别的更改。
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时,客户端如何与标准的REST API通信以对字段级别的更改生成命令并在服务器端REST终点执行?
主要问题是,如何设计REST API,使其最终还能支持事件溯源?
如果有人能够提供帮助,那将不胜感激。