文章目录
- Go Backend Clean Architecture:一套可直接复用的 Go 后端项目模板
- 项目分层
- 技术栈与主要依赖
- 启动方式
- 接口示例
- 测试与 Mock
- 适合谁用
Go Backend Clean Architecture:一套可直接复用的 Go 后端项目模板
Amit Shekhar 在 GitHub 上维护的 go-backend-clean-architecture 已经收获了 6,104 个 Star,适合想要用 Go 搭建后端服务的开发者参考。
这个项目基于 Gin 框架实现,采用 Clean Architecture 分层思路,同时集成了 MongoDB、JWT 认证中间件、单元测试和 Docker 支持。作者将其设计为可以直接作为模板使用的项目骨架,开发者可以在此基础上快速搭建自己的 Go 后端应用。
项目分层
整个项目按照 Clean Architecture 划分为五层:
- Router:负责路由注册
- Controller:处理 HTTP 请求和响应
- Usecase:承载业务逻辑
- Repository:与数据库交互
- Domain:定义核心实体和接口
这种分层方式让业务逻辑、数据访问和接口层相互独立,修改其中一层时对其他层的影响较小。项目还提供了架构图,展示了 Public API 和 Private API 的请求流转路径,便于理解数据从请求进入系统到落库的完整过程。
技术栈与主要依赖
项目选用了 Go 生态中比较常见的工具和库:
- gin:HTTP Web 框架
- mongo-go-driver:MongoDB 官方驱动
- jwt:用于 Access Token 和 Refresh Token
- viper:读取 .env 等配置文件
- bcrypt:密码哈希
- testify:测试断言
- mockery:自动生成 mock 代码
这套组合覆盖了路由、认证、配置、存储和测试几个关键环节,适合中小型后端项目直接使用。
启动方式
项目支持两种运行方式:本地运行和 Docker 运行。
本地运行需要配置 .env 文件,并将 DB_HOST 设置为 localhost,然后执行:
go run cmd/main.goDocker 方式则更简单,配置好 .env 后执行:
docker-compose up -d两种方式默认都在 8080 端口提供服务。
接口示例
项目内置了几个基础接口:
- /signup:用户注册
- /login:用户登录
- /profile:获取用户信息
- /task:创建和查看任务
- /refresh:刷新 Token
注册和登录接口会返回 accessToken 和 refreshToken,后续访问受保护接口时需要在请求头中携带 Authorization: Bearer access_token。
测试与 Mock
为了便于测试,项目使用 mockery 为 usecase、repository 和 database 生成 mock 代码。接口变更后,需要重新生成对应的 mock 文件。测试命令为:
go test ./...mock 生成命令如下:
mockery --dir=domain --output=domain/mocks --outpkg=mocks --all mockery --dir=mongo --output=mongo/mocks --outpkg=mocks --all适合谁用
如果你正在学习 Go 后端开发,或者准备从零开始一个新项目,这个项目可以作为起点。它把常见的目录结构、依赖选择和接口流程都整理好了,省去了很多重复决策的时间。
项目的 README 内容比较完整,除了架构说明和运行方式,还附带了 Postman 接口文档链接和 curl 示例,基本可以直接跟着走一遍。
Amit Shekhar 是 Outcome School 的创始人,长期分享 Android、后端和系统设计的知识。这个项目也延续了他一贯的风格:代码结构清晰,文档直接可用。对于想要把 Clean Architecture 落地到 Go 项目中的开发者来说,值得一看。
、后端和系统设计的知识。这个项目也延续了他一贯的风格:代码结构清晰,文档直接可用。对于想要把 Clean Architecture 落地到 Go 项目中的开发者来说,值得一看。