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

时间:2017-04-27 13:00:18

标签: domain-driven-design

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

1 个答案:

答案 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

我再说一遍,DDDstruct毫无意义。