api - 为什么不应该将域模型用作 REST API 中的资源?

标签 api rest domain-driven-design domain-model

我遇到了一个声明,即按照 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 中获得足够的好处来证明其成本是合理的。

关于api - 为什么不应该将域模型用作 REST API 中的资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33970716/

相关文章:

php - Mailgun API 仅适用于一封电子邮件

java - 从 Spring RESTful 服务运行 Spark 作业

c# - 具有多个实体的存储库创建 DTO

java - 带有 JPA 的域对象中的注释违反数据库是一个细节

c# - 通过针对接口(interface)编程来保留数据

c# - 使用 .NET Framework 3.5 在 C# 中调用 Web API

php - 流明 API 中的请求对象为空

c# - ASP.NET Web API 获取子列表(分层资源)

rest - 如何使用 Soap UI 将响应作为附件获取

api - 通过 API POSTMAN 在 Stripe 中创建卡片 token