新手提问: gin+gorm 中大型项目分层问题
在 github 上看了一些例子,按我现在的理解分层:
controller — 请求入口,参数校验,调用 server,返回错误或响应
server — 接收已验证参数,实现具体业务逻辑,调用 dao,返回结果
dao — 所有与数据库相关的操作
model — 定义 struct 以用于 orm 映射
不知道我的理解是否正确,同时,我还有下面一些疑惑:
1:dao 层的作用?我在网上看的例子有一些有 dao 层,同时也有很大一部分没有这层,server 层的代码中直接调用 orm 增删改查的方法。如果 server 中每次要用到数据库的地方甚至只是参数稍有不同,就要在 dao 中写一个对应的函数,岂不是会很繁琐。而且我觉得对于像 CreateTag 这种简单方法,orm 也是直接一行语句就能实现,再单独包 dao 这一层他的优势是什么。
2:server 层的写法?我现在的理解是有几个 controller 就要写几个对应的 server,比如有 CreateTag, ListTag, UpdateTag, DeleteTag, CreatePost, ListPost, UpdatePost, DeletePost 这 8 个 controller 是不是就要写 8 个对应的 server,那拆分出 server 层的目的仅仅就是不让业务逻辑都堆在 controller 吗,我在网上有看到说 server 层可以重用代码,但这样每加一个 controller 就要加一个 server 的,该怎么体现重用
刚看完代码,脑子有点乱,还希望有大神能解答我的疑惑