基于gin
的一个轻量api
骨架,可以帮助你快速开始业务开发
之前做过其他语言的Web开发,切换到gin后会感觉少了点什么,最明显的一点他没有提供一个推荐或默认的目录结构
比如常见的controller
,model
,service
,repository
等等
这会造成新手不知道如何去组织和划分代码
还有就是没有提供一些开箱即用的Web通用组件,比如数据库,缓存等
project
├── build 二进制文件打包目录
├── cmd 应用目录,可能存放多个应用
│ └── app 具体的应用,名字根据业务来取就行
│ └── main.go 应用的入口,只负责启动服务,不应该涉及业务代码
├── config 配置目录
│ ├── config.ini 这个文件一般不应该提交
│ └── config.ini.example
├── go.mod
├── go.sum
├── internal 由于业务项目一般是不对外公开的,也不存在被其他项目导入的可能,所以放到internal中
│ ├── app 对应cmd里面的具体应用
│ │ ├── api => controller
│ │ │ ├── base.go
│ │ ├── model 这里面只定义模型和关联关系,不建议在这里写CRUD
│ │ │ ├── base.go
│ │ ├── router.go 路由
│ │ └── service
│ │ ├── student.go
│ └── pkg
├── LICENSE
├── log
│ ├── req20230513.log
│ └── runtime.log
├── Makefile
├── readme.md
└── test
./quick-cli github.com/xxx/myblog
./quick-cli-mac github.com/xxx/myblog
./quick-cli.exe github.com/xxx/myblog
make
详情查看Makefile文件,里面定义几种常用命令controller层 参数验证,返回处理结果
model层 推荐只定义模型和关联关系,不涉及CRUD, 但是如果你的项目极小,可以考虑在这里写CRUD,砍掉service层, 相当于把service层的功能分摊到model和controller层了
service层 业务逻辑,调用各种pkg,数据库CRUD 但是如果你的项目很复杂,可能需要复用或者缓存CURD,这个时候你可以在抽一个repository层出来专门处理数据库, 相当于把service在细拆