一个完整的 Golang web 应用骨架。
包含:
- 可用于API接口应用,CLI命令行应用,WEB应用
- 日志库logrus配置使用
- swagger API文档配置生成
- 多语言支持,视图渲染,请求数据验证
- 配置读取管理,根据环境加载,多文件支持
- 包含 redis, mysql, mongo 的初始化和简单使用
- 使用
go mod
来安装管理依赖库
api/ API接口应用 handlers
|- controller
|_ middleware
app/ 公共目录(公共方法,应用初始化,公共组件等)
cmd/ CLI命令行应用 commands
|_ cliapp/ 命令行应用入口文件(main)
config/ 应用配置目录(基础配置加各个环境配置)
model/ 数据和逻辑代码目录
|_ form/ 请求表单结构数据定义,表单验证配置
|_ logic/ 逻辑处理
|_ mongo/ MongoDB的数据集合模型定义
|_ mysql/ MySQL的数据表单模型定义
|_ rds/ Redis的数据模型定义
resource/ 一些项目使用到的非代码资源(语言文件,视图模板文件等)
runtime/ 临时文件目录(文件缓存,日志文件等)
static/ 静态资源目录(js,css等)
route.go 路由注册文件
Dockerfile Dockerfile
makefile 编写了一些通用的快捷命令,帮助打包,构建docker,生成文档,运行测试等等
... ...
- http路由: gookit/rux
- 配置读取管理:
- ini配置:gookit/ini
- 多种格式配置:gookit/config
- 日志记录:
- mysql等:
- mongodb: github.com/globalsign/mgo
- cache: gookit/cache
- redis
- language: gookit/i18n
- view渲染: gookit/view
- 命令行应用: gookit/gcli
- 表单数据验证:
- 高性能的json序列化库: json-iterator/go
eureka client: PDOK/go-eureka-client未使用
- swagger 文档生成:
- go-swagger 文档复杂,功能更强大
- swaggo/swag 文档和使用比较简单,仅生成文档足够用了
- 测试辅助库,方便快速断言 stretchr/testify
- 调试工具:davecgh/go-spew 深度打印golang变量数据
- swagger UI: swagger文档渲染
- Dockerfile: 可用于生产环境的docker镜像构建脚本,基于alpine,构建完成一个项目镜像估计大小为:30 M 左右
- makefile: 已经内置一些快速使用的make命令,帮助快速生成文档,构建镜像
- 首先,将骨架仓库clone到你的本机目录
- 重命名
go-web-skeleton
目录为你的项目名 - 进入到项目,将项目中
github.com/inhere/go-web-skeleton
替换为你的项目名(针对go文件) - 再搜索将所有的
go-web-skeleton
替换为你的项目名(主要是Dockerfile,makefile里) - 运行
dep ensure
安装依赖库到vendor - 运行项目:
go run main.go
安装:
go get -u github.com/swaggo/swag/cmd/swag
使用请查看
swaggo/swag
的文档和示例
生成到指定目录下:
swag init -s static
# 同时会生成这个文件,不需要的可以删除掉
rm docs/docs.go
注意:
swaggo/swag
是从字段的注释解析字段描述信息的
type SomeModel struct {
// the name description
Name string `json:"name" example:"tom"`
}
- 运行测试
go test
// 输出覆盖率
go test -cover
- 格式化项目
go fmt ./...
- 运行GoLint检查
需先安装 GoLint
golint ./...
MIT