GBoot
基于 Gin + Hprose + Consul + GORM + WIRE 实现的微服务脚手架,目的是提供一套轻量的中台开发框架,方便、快速的完成业务需求的开发。
[![ReportCard][reportcard-image]][reportcard-url] [![GoDoc][godoc-image]][godoc-url] [![License][license-image]][license-url]
特性
- 遵循
RESTful API
设计规范
- 基于
GIN
框架,提供了丰富的中间件支持(JWTAuth、CORS、RequestLogger、RequestRateLimiter、TraceID、CasbinEnforce、Recover)
- 基于
GORM
的数据库存储 -- 存储层抽象了标准的外部业务层调用接口,内部采用封闭式实现(为后续切换数据存储提供了较大的便利)
- 基于
WIRE
的依赖注入 -- 依赖注入本身的作用是解决了各个模块间层级依赖繁琐的初始化过程
- 基于
Logrus & Context
实现了日志输出,通过结合 Context 实现了统一的 TraceID/UserID 等关键字段的输出(同时支持日志钩子写入到Gorm/Mongo
)
- 基于
JWT
的用户认证 -- 基于JWT的黑名单验证机制
- 基于
net/http/httptest
标准包实现了 API 的单元测试
依赖工具
手动安装
go get -u github.com/google/wire/cmd/wire
go get -u github.com/Unknwon/goconfig
go get -u github.com/gin-gonic/gin
go get -u github.com/hprose/hprose-golang
go get -u github.com/jinzhu/gorm
使用 mod 安装第三方依赖
go mod tidy
go mod vendor
交叉编译平台的二进制文件
mac上编译linux和windows二进制
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
linux上编译mac和windows二进制
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
windows上编译mac和linux二进制
SET CGO_ENABLED=0 SET GOOS=darwin SET GOARCH=amd64 go build main.go
SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build main.go