Go Backend Clean Architecture:一套可直接复用的 Go 后端项目模板
2026/7/9 3:28:26 网站建设 项目流程

文章目录

  • 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.go

Docker 方式则更简单,配置好 .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 项目中的开发者来说,值得一看。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询