如何使用强类型语言(如Java或C#)中的RCF6902 JSON PATCH规范在DDD应用程序中执行HTTP PATCH。条件不是违反DDD,所有内容都是强类型的,并且实体是不可变的吗?
答案 0 :(得分:7)
RFC6902
的意图与DDD
方法不完全兼容。此RFC
用于定义用于以CRUD
样式变换对象的协议,而不是DDD
样式。 DDD
侧重于使用无处不在的语言的商业行为,而CRUD则侧重于数据。
如果确实想要,可以使用RFC6902
作为应用程序的命令端(也称为写入端)。每个PATCH
请求都将映射到一个或多个命令,这些命令将发送到请求的URL
标识的单个聚合。此外,只有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 }
]
此请求会将quantity
设为3
item
id
456
等于order
id
123
等于RFC6902
。
我再说一遍,DDD
对struct
毫无意义。