beego 是优秀的REST API 框架。平时很多服务也都使用了beego进行快速开发。但是 beego 设计的目录结构是简单的MVC结构。针对业务逻辑处理要么放到Controller里面,要么放到model里面,代码耦合比较大,多个模块直接不方便重复调用。因此参考 spring boot 目录结构和阿里《java 开发手册》,重新对beego目录结构进行定义划分。
抛弃gopath,采用go mod管理依赖包。
# beego 目录结构规划
.
|-- conf
| `-- app.conf
|-- constant
|-- controllers
| |-- default.go
| `-- user_controller.go
|-- g
| `-- global.go
|-- go.mod
|-- go.sum
|-- main.go
|-- mapper
| `-- auth_user_mapper.go
|-- models
| |-- do
| |-- dto
| `-- vo
|-- routers
| `-- router.go
|-- service
| `-- user_service.go
|-- tests
| |-- default_test.go
| `-- log_test.go
`-- utils
`-- page_helper.go
- conf: beego 默认配置文件目录
- controllers: controller 层定义
- routers: api 路由定义
- models:
- do: 数据对象(data object),和数据库表完全一致
- dto: 数据传输对象(data transfer object),用户接口参数和查询参数对象定义
- vo: 可视对象(view object),用户API返回结果定义
- mapper: 参考spring boot结构,定义 models中的do对象的 sql 操作。
- service: 业务逻辑处理定义,业务逻辑放到service层处理,controller调用service层
- constant: 常量数据定义
- g: 全局对象定义
- utils: 工具类定义