如何使用强类型语言使用域驱动设计执行HTTP PATCH?

Ste*_*efa 2 domain-driven-design

如何使用强类型语言(如Java或C#)中的RCF6902 JSON PATCH规范在DDD应用程序中执行HTTP PATCH .条件不是违反DDD,所有内容都是强类型的,并且实体是不可变的吗?

Con*_*enu 7

该意图RFC6902与该DDD方法不完全兼容.这RFC用于定义用于改变CRUD样式中对象的协议,而不是DDD样式.DDD使用普遍存在的语言关注商业行为,而CRUD则关注数据.

如果您真的想要,可以使用RFC6902应用程序的命令端(也称为写入端).每个PATCH请求都将映射到一个或多个命令,这些命令将发送到由URLRequest请求标识的单个聚合.此外,只有add操作才有意义,如add and process a new command.对于某些命令,remove操作可能有意义,但这更奇怪.

因此,请求可能如下所示:

PATCH /orders/1234/change/item/quantity HTTP/1.1
Host: example.org
Content-Length: 326
Content-Type: application/json-patch+json

[
   { "op": "add", "path": "/item/456", "value": 3 }
]
Run Code Online (Sandbox Code Playgroud)

该请求将设置quantity3itemid等于456orderid相生相123.

我再说一遍,RFC6902没有意义DDD.