使用my_gin_cli开发Web服务: 用最简单的架构,实现够用的框架,服务海量用户
本项目采用了一系列Golang中比较流行的组件,可以以本项目为基础快速搭建Restful Web API
本项目已经整合了许多开发API所必要的组件:
- Gin: 轻量级Web框架,自称路由速度是golang最快的
- GORM: ORM工具。本项目需要配合Mysql使用
- Gin-Session: Gin框架提供的Session操作工具
- Viper: 开发环境下的环境变量工具,方便使用环境变量
- Gin-Cors: Gin框架提供的跨域中间件
- Zap: 日志工具
- 自行实现了国际化i18n的一些基本功能
- 本项目是使用基于cookie实现的session来保存登录状态的,如果需要可以自行修改为token验证
本项目已经预先实现了一些常用的代码方便参考和复用:
- 创建了用户模型
- 实现了
/api/v1/user/register
用户注册接口 - 实现了
/api/v1/user/login
用户登录接口 - 实现了
/api/v1/user/me
用户资料接口(需要登录后获取session) - 实现了
/api/v1/user/logout
用户登出接口(需要登录后获取session)
本项目已经预先创建了一系列文件夹划分出下列模块:
- api文件夹就是MVC框架的controller,负责协调各部件完成任务
- model文件夹负责存储数据库模型和数据库操作相关的代码
- controller负责处理比较复杂的业务,把业务代码模型化可以有效提高业务代码的质量(比如用户注册,充值,下单等)
- serializer储存通用的json模型,把model得到的数据库模型转换成api需要的json对象
- cache负责redis缓存相关的代码
- auth权限控制文件夹
- util一些通用的小工具
- conf放一些静态存放的配置文件,其中locales内放置翻译相关的配置文件
- logs用于存放日志
项目在启动的时候依赖以下环境变量,使用json
格式来编写配置信息,复制config.json.example
文件改为config.json
,修改其中的配置
{
"database": {
"mysql": "db_user@/db_name?charset=utf8&parseTime=True&loc=Local"
},
"redis": {
"redis_addr": "127.0.0.1:6379",
"redis_pw": "",
"redis_db": ""
},
"session": {
"session_secret": "setOnProducation"
},
"logger": {
"log_level": "debug",
"log_file_path": "./logs",
"log_file_name": "logs"
},
"swagger": {
"swagger_addr": "http://localhost:8080/swagger/doc.json"
}
}
本项目使用Go Mod管理依赖。
go mod tidy
export GOPROXY=https://goproxy.cn/
go run main.go
项目运行后启动在8080端口(可以修改,参考gin文档)