文章首发于:clawhub.club


最近学习Go,在看各种文档,博客,别人写的代码。最后搭建了一个纯API应用框架。

  • 选用Gin框架做web服务
  • 分层思想
  • 配置文件采用:github.com/go-ini/ini
  • 日志采用go.uber.org/zap/zapcore和gopkg.in/natefinch/lumberjack.v2
  • redis:github.com/go-redis/redis
  • orm:github.com/jinzhu/gorm操作mysql
  • 校验框架采用:github.com/astaxie/beego/validation
  • Token方案:github.com/dgrijalva/jwt-go
  • 工具包:github.com/Unknwon/com
  • 导入导出excel:github.com/360EntSecGroup-Skylar/excelize和github.com/tealeg/xlsx

项目地址:

https://github.com/ClawHub/go-gin-demo

主要参考文档:

感谢这位大神:https://github.com/EDDYCJY/go-gin-example/blob/master/README_ZH.md
gin项目地址
gin官方文档
Golang 微框架 Gin 简介
go-ini项目地址
go-ini文档
golang 读取配置文件
zap项目地址
golang高性能日志库zap配置示例
深度 | 从Go高性能日志库zap看如何实现高性能Go组件
go-redis项目地址
GORM官方文档
validation项目地址
jwt-go项目地址
jwt-go文档
Unknwon/com
tealeg/xlsx
360EntSecGroup-Skylar/excelize
GOLANG使用VENDOR目录来管理依赖包
Go 语言开发 API 实践

技术选型时的犹豫

  • 服务框架最开始时看的是beego这个框架确实很牛!但是对我这个新手来说,太重了,所以就选了Gin
  • redis客户端也有个redigo也不错,唯一不好的是貌似不支持集群,所以选了go-redis。
  • 配置文件选型,我是java出身,所以很倾向于用properties文件,最开始用了magiconair/properties,但是发现好多go工程都是用的ini文件,索性也用这个,用起来感觉也很顺手go-ini,好评!
  • 日志文件,从最开始就用官方log,后来跟着教程写了一个log,到现在用的uber的zap,自己简单封装一下,用起来也很不错。

先写到这里好了。