kib*_*ibe 1 domain-driven-design node.js express clean-architecture
据我所知,Clean Architecture/DDD 声明您的用例可以由任何东西触发,让它是 HTTP 请求或 GUI,对吗?
我正在尝试模仿这一点,但我不确定我是否做得正确。
在我的infrastructure文件夹中,我有路由器。例如:
import express from 'express'
import UserController from '../controllers/user_controller.js'
import ExpressRouterAdapter from './ExpressRouterAdapter.js'
export default function UsersRouter () {
const router = express.Router()
router.route('/:username').get(ExpressRouterAdapter.adapt(UserController.getUser))
return router
}
Run Code Online (Sandbox Code Playgroud)
(ExpressRouterAdapter只是将 Express 请求转换为简单的 httpRequest JS 对象的适配器)
这是我的GetUser控制器:
import express from 'express'
import UserController from '../controllers/user_controller.js'
import ExpressRouterAdapter from './ExpressRouterAdapter.js'
export default function UsersRouter () {
const router = express.Router()
router.route('/:username').get(ExpressRouterAdapter.adapt(UserController.getUser))
return router
}
Run Code Online (Sandbox Code Playgroud)
我有几个问题:
PostUser, GetUser, DeleteUser。所以我猜他们应该在infrastructure文件夹内,对吧?我猜只有在您的交付机制是 Web 应用程序时才使用控制器,对吗?
你是对的。与 DDD 没有任何关系,因为 DDD 与上下文和语言有关,但对于干净的架构、端口和适配器来说,这是正确的想法。
通常情况下,你会有这样的结构:
因此,您的应用程序公开了一个表示端口的 API,您可以连接实现不同类型物理交付协议的不同边缘组件以与您的应用程序通信。
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |