-
Notifications
You must be signed in to change notification settings - Fork 0
Home
yahuian edited this page Nov 13, 2024
·
12 revisions
🐶 一个集成了众多社区优秀组件的 Go Web API 开发模板,简洁、高效、自由
刚入门 go web 开发时,使用 gin 快速上手,然后不断的各种找组件(日志、配置、ORM等等),玩的不亦乐乎
后续感觉每次写新项目自己组装有点麻烦,遂尝试了 beego 以及 goframe 框架,使用了一段时间后,终究感觉不太自由
于是就开发了这个模板,简洁自由,无过度封装
- web引擎:gin
- ORM:gorm
- 配置:viper
- 日志:zap
- API文档:gin-swagger
- model: 数据库 CRUD、缓存、可供其他 service 调用的通用业务逻辑
- service: 按职责划分的模块内部业务逻辑
- api: 数据解析,参数校验,数据组装,结果返回
- service 之间不可调用,避免造成循环依赖的问题
- api 和 service 都可以调用 model 层
- 不用纠结代码放在哪层,前期可以统一放在 service 中,随着项目的发展,不断将逻辑提炼到 api 和 model 中,避免某一层代码太重
- cmd: 放项目中可执行的文件
- config: 配置
- docs: swagger 文件以及项目文档
- errcode: 业务错误码
- pkg: 可能后续会提供给外部项目,或者单独分装为库使用的包
- sql: 数据库 sql 文件
git clone git@github.com:yahuian/dog.git
cd dog
# 生成 swagger 文档
go install github.com/swaggo/swag/cmd/swag@latest
# 开发时代码热重载
go install github.com/cosmtrek/air@latest
# 生成本地配置文件并修改 DB.DSN
cp config/config.example.yaml config/config.yaml
# model service api 代码生成
go run cmd/dog/main.go -p_name=user -m_name=User
# 创建好数据表并补充字段
# 生成 api 文档
# 如果有依赖底层库的结构如 gorm.Model 则需要添加 --parseDependency 参数(生成速度会慢)
swag init
# 启动
# 由于 swag init --parseDependency 比较慢,所以在 air 中没有执行,如果 api 文件有修改,手动执行一次即可
# .air.toml bin = "./tmp/main -config=config/config.yaml" 可以指定配置文件
air
# 修改 Dockerfile 中的镜像名
IMAGE="your image name"
make release TAG=0.0.1