我发现一个声明,即根据DDD设计的域模型不应该用作REST API中的资源(
source).
很明显,REST API是应用程序的契约,而域模型是实现的一部分,因此最好将这两个事物分开,这样域模型的更改不会自动意味着更改REST API.
但是,我认为在小型项目(REST API只有一个消费者 – 由一个团队开发的javascript前端)的情况下,拥有单独模型的好处并不能证明分离模型的成本(不同的类 – 域模型和资源表示和模型之间的映射代码).显然,域层不能引用REST特定的基础结构代码(以保持关注点分离).
域和REST模型应该分开吗?
解决方法
使用DDD时,REST API应始终与域模型分离.
这样做的主要原因是简化 – 您不希望通过API将域模型的复杂性泄露给客户端.否则,客户需要了解域的细微差别和复杂性,这很可能使API难以使用.
使用DDD的主要驱动因素是一个复杂的问题域,因此这始终是一个问题.
However,I think in case of small projects (…) the benefits of having separate models does not justify the cost of separating the models (…).
我同意有些项目的分离域模型和REST API过度工程化.但是,这些案例不适合DDD,因为您不会从DDD中获益足以证明其成本合理.