本工具包旨于让您快速构建起项目结构,以便通过Go来开发WebApi或RPC服务,遵循SOLID的最佳实践来编写GO代码.
现阶段本项目例子还相对简单,但框架及组件的使用都是在实际项目使用的,未来再提供近于实战的例子.
本工具包提供下列功能:
- 应用与组件的可配置性,并支持配置中心方式
- 基于Gin的Web服务支持
- GraqhQl服务支持
- 基于Gorm的数据库操作及事务控制
- JWT-based 验证
- 异常处理及可控的错误响应
- 应用日志及访问日志支持
- 围绕protobuf为模型中心,生成通用性代码
- 采用Service层,并可扩展为RPC服务或微服务
- 测试环境可配置
本工具包使用了常见的GoPKG,你可以很容易的替换为自己喜欢的包.因为这些流行的PKG进行了良好的抽象 .
- 路由框架: gin
- 数据库及ORM: gorm
- 数据验证: 目前通过Gin在路由层处理,还有很式工作 [want help]
- 配置文件: viper
- 日志: Uber Zap
- graphql: gopher-graphql
- 依赖管理: DEP 将被vgo取代
- 基础套件:qeelyn-common
- 缓存 cache 内置支持local,redis,memcached
- protobuf工具包
- grpc 一些的微服务工具包
- 中间件与组件: qeelyn-contrib
- protoc生成工具扩展: protoc-gen-goql
微服务部分
- 服务注册与发现: 实现了etcd,留有其他组件扩展的能力
- GRPC组件: 主要采用了grpc-ecosystem提供的组件
- 系统监控: prometheus,可配合grafana搭建监控平台
- 通过Docker构建部署.可通过基于jenkins的持续构建进一部了解
本套件面向是的企业级应用开发,做为通用的API编程框架.包括常见的RESTapi,微服务架构支持.
本套件的目标不是为了实现像beego这样的全栈框架,通常认为每个项目特性不同,除了提供一些基础包,应该由项目自行装配.
- go环境安装
- IDE vscode or goland
- 以前go的开发离开不了翻墙,现在可以不翻了,具体可看工具篇
git clone https://github.com/qeelyn/golang-starter-kit.git $GOPATH/src/xxx.com/your-vendor/project-name
make run
默认采用微服务结构,通过浏览器访问: http://localhost:18000/graphiql
,graphiql正常显示时在graphiql中输入:
query test {
hello(name:"qsli") {
id
}
}
执行,没有看到异常时表示项目正常运行
开发手册: 戳我
QQ: 21997272