使用清洁架构的DDD实现Go REST API样本。

555 阅读1分钟

[

](#folder-design)文件夹设计

├── api
│   └── configs
│   └── controllers
│       └── v1
├── application
│   └── consts
│   └── users
│       └── consumers
│       └── mappers
│       └── models
├── domain
│   └── common
│   └── users
├── infrastructure
│   └── common
│       └── event-dispatcher
│       └── persistance
│   └── users

[

](#api-presentation-layer)Api (表现层)

这一层是为客户端(移动、网络等)应用程序访问我们的领域而开发的部分。它将把本层的请求转发给应用层,并公开它从应用层收到的响应。

正如你在示例项目中看到的,我们的项目将通过控制器类使用HTTP协议从外部世界访问。下面是示例代码片段,它将HTTP收到的请求转发到应用层,并返回它收到的结果。

func

[

](#application-layer)应用层

应用层目前有应用服务、事件消费者、映射器和数据传输对象。然而,它也可以包含跨领域的关注,如事务管理、日志、缓存和异常处理。(很快)

应用层只从域层调用一个聚合根,并且可以使用其功能。之后,它可以将聚合根上的所有变化保存到任何数据库系统中。

正如你在示例代码块中看到的,一个新的客户用户在应用服务中被创建,然后保存到数据库中。然后,创建的相关用户信息被映射到user-created-model并被发送到上层。

func

[

](#domain-layer)领域层

将很快完成。

[

](#infrastructure-layer)基础设施层

将会很快完成。

GitHub

github.com/rozturac/go…