|
|
1
2
指针。
在本例中,A“保存对B的引用”。根据Evan的指导原则,如果A和B都是域实体,那么B的这个实例就是A的这个实例的同一个聚合的成员 或 B本身就是其集合的根实体。
REST API是一组资源,其中的资源可以理解为“web页面”的泛化。客户端发送消息来操纵资源,而有用的业务活动是操纵资源的副作用。看见 Webber, 2011 . 换句话说,客户机向HTTP服务器发送一个补丁/POST/PUT消息,服务器反过来调用相应聚合根实体上的一些命令。
所有这些都很好,因为您可以拥有任意多个不同的资源来更改相同的聚合根,也可以使用任何您喜欢的拼写约定作为资源标识符。这里唯一真正的限制是标识符应该符合RFC 3986。 注意:在更改后保持不同资源的所有客户端本地缓存副本的同步可能很棘手;因此,如果您还不确定自己知道自己在做什么,那么我的建议是每个聚合使用一个资源。 It is okay to use POST ,您可能会发现,使用POST将域模型命令的表示形式发送到服务器比尝试从修补程序文档计算命令更容易实现。记住,web使用HTML表单和POST取得了灾难性的成功。
小心——“子资源”在REST上下文中并不是真正的东西。我们有资源,比如
我们有第二资源,比如
这两种方法都不能很好地映射到聚合根中的域实体。资源模型是域模型前面的一个门面。 在REST API中,客户端不直接与域模型交互。相反,客户机将消息寻址到资源,资源与域模型交互(通过聚合根)。 因此,如果您想向埋在聚合根“下方”的聚合中的某个域实体显示一些信息,那么您可以将该信息发送到资源模型中的某个资源,并且资源实现中的消息处理程序与聚合根共享该信息,然后聚合根与聚合中的其他域实体共享该信息。
如果在响应中包含正确的元数据,这可能就没问题了。
使用以“集合”资源为目标的POST请求在服务器上创建新资源并没有什么不同。
也就是说,如果您向
|
|
|
2
0
我的建议是尽可能简单易懂。 首先 休息指南是惯例 ,而不是一成不变的规则。 还有,你说你害怕不安静。我几乎可以肯定你无论如何都不会这样:-)。例如,我几乎可以肯定你不会实施 HATEOAS 如果没有它,你就不会创建一个RESTful系统(毕竟,就像你在周围找到的绝大多数所谓RESTAPI一样:-) 也就是说,你应该 考虑一下你想要对其执行的资源和积垢操作 . 由于折扣取决于其他项目在子车的存在,我的建议是考虑推车作为您的资源,包括其子车和项目。这简化了您的工作和对系统的整体理解。 根据性能和清晰度问题做出决定。 |
|
|
Birdalicious · 带日志的装饰图案 1 年前 |
|
|
Saulo Torres · 依赖注入程序在DDD项目上不起作用 2 年前 |
|
|
yyqwerty · 领域驱动设计与Scala[关闭] 2 年前 |
|
|
Tony Raimo · 域实体是否应该调用存储库? 8 年前 |
|
|
Seb · DDD只读存储库返回“值对象” 8 年前 |