微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

rest – API基础结构类是否应该成为DDD域中的一部分?

我在后端应用程序上工作,暴露REST API,我(尝试)在我的项目中使用域驱动设计.

REST API在一组固定的域类上运行.对于域中的每个agregate根,都有一个单独的REST端点.然而,尽管做了所有努力,但有些情况下会出现新的类,而不是来自域类(基础结构类),例如:

>一个持有批处理操作状态的类[{“id”:1,“status”:“success”},{“id”:2,“status”:“failure”,“message”:“详细消息”}]
>具有用户选择的列的类[{“column”:“id”,“order”:1},{“column”:“created”,“order”:2}]

现在有两个选择:

>是否可以让REST API公开不属于域的类?
>或者这些类应该成为域的一部分吗?

解决方法

您不应该尝试直接针对您的域模型构建REST API.对于这样一个会破坏域模型的界面,您需要承担相当多的责任.例如.事务控制,安全性,输入验证是您可能需要的东西,但不属于域模型.

这就是应用程序服务的用途.

在包含应用程序服务(通常称为服务层)的域模型周围构建一个薄层.应用服务是域模型的直接客户端.它们通常围绕用例而不是聚合进行组织.现在,您的REST API是应用服务的直接客户端,而不是域模型.

您提到的两个类也可以很好地适应服务层.

编辑:

请注意,使用六边形体系结构(适合DDD)时,服务层与持久层不同.服务层使用持久层加载并将聚合保存到数据库.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐