Go Backend Clean Architecture 项目介绍
Go Backend Clean Architecture
是一个基于Go语言(Golang)实现的后端清晰架构项目。这个项目采用了Gin框架、MongoDB数据库、JWT认证中间件,并支持测试和Docker部署。这一项目可以作为您构建Go语言后端项目的模板。
项目背景
在创建这个项目之前,开发者关注了GitHub上超过20个与Golang清晰架构相关的项目。在学习了这些项目的代码后,作者结合自己的想法和经验,最终创建了这个项目。作者特别强调,通过编写代码是学习编程的最佳方式,而通过阅读优秀的代码能提升自己的编程水平。项目的开发者鼓励大家给出反馈,以帮助他人和自己持续改进。
项目的架构层
该项目按功能和责任划分为多个层次,以保持代码的清晰和可维护性。主要的架构层包括:
- 路由层
- 控制器层
- 用例层
- 仓储层
- 领域层
项目所用的主要技术和工具
- Gin:一个用Go语言编写的HTTP Web框架,以高性能著称。
- Mongo Go Driver:官方提供的用于MongoDB的Golang驱动。
- JWT:被广泛使用的JSON Web Token规范,用于安全地传递认证信息。
- Viper:用于从
.env
文件加载配置。 - Bcrypt:用于密码加密的算法实现。
- Testify 和 Mockery:用于单元测试和生成模拟代码的工具。
API工作流程
项目区分了公共API请求和私有API请求(需JWT认证)两种类型,确保了安全性和访问控制。
项目的部署
项目可以使用Docker,也可以在本地环境下直接运行。下面简要介绍这两种方法:
非Docker环境运行步骤:
- 在项目根目录创建
.env
文件,并填写必要的配置。 - 确保已安装Go语言和MongoDB数据库。
- 更新
.env
文件中的DB_HOST
为localhost
。 - 运行
go run cmd/main.go
启动服务。 - 通过
http://localhost:8080
访问API。
使用Docker运行步骤:
- 同样先创建并配置
.env
文件。 - 安装Docker及Docker Compose。
- 运行
docker-compose up -d
启动服务。 - 通过
http://localhost:8080
访问API。
项目的测试和模拟代码生成
项目支持完整的单元测试,并可生成模拟代码用于测试:
- 使用
go test ./...
命令来运行所有测试。 - 使用Mockery生成用例、仓储和数据库的模拟代码。
项目的文件结构
项目采用分层结构组织文件,主要包含以下目录:
api
目录包含控制器和路由。bootstrap
目录包含应用、数据库初始化和环境配置。domain
,repository
,usecase
目录分别实现不同层次的业务逻辑。- 其他目录和文件如
cmd
、docker-compose.yaml
、go.mod
等用于项目启动和管理依赖。
API 示例请求和响应
注册账号
-
请求:
curl --location --request POST 'http://localhost:8080/signup' \ --data-urlencode 'email=test@gmail.com' \ --data-urlencode 'password=test' \ --data-urlencode 'name=Test Name'
-
响应:
{ "accessToken": "access_token", "refreshToken": "refresh_token" }
项目许可证
本项目基于Apache 2.0许可证开放,详细使用条款请查看项目中的LICENSE文件。
结语
此项目旨在帮助开发者快速构建和理解Go语言的后端架构。如果本项目对您有帮助,欢迎为此项目点赞。对于任何贡献,开发者均持欢迎态度。