小弟不才,上班之余用 go 搭建了一套开箱即用的 api 接口框架,主要特点
- 路由层使用主流了的 gin 框架
- db 操作引入了国内比较主流的 gorm
- redis 使用了 go-redis ,个人觉得比 redigo 好点儿,主要是有命令方法,可维护性强一些
- 引入了 zerolog,记录日志,做开发时间长了,感觉没有日志简直就是要命,日志没有 requestId 之类的也很痛,所以在框架中规避了这个痛点,并且日志也区分了业务日志,panic 日志,access 请求日志,以及日志级别
- 引入了定时任务,便于开发一些定时任务,使用 job 定义定时任务的结构和业务
- 引入 validator 验证,结合 gin 自带的 shoudbind 相关方法,进一步做了优化,支持自定义提示字段名字,并且支持在 shoudbind 之外使用 validator
- 使用 google/uuid 生成 requestId,requestId 在日志以及响应 json 结果中提现,支持自定义 requestId 字段名字,如改成 traceId
- 结构化响应结果,响应结果包含 code 、message 、data 三个字段,也支持自定义响应字段名字,如改成 status 、msg 、result ,另外对 gin 自带的 ctx.JSON 进行了封装,使用 httpx.Ok 或者 http.Error 等
- 引入了 event 事件,可以对主业务之外的逻辑使用事件方式编写
欢迎各位老师提出宝贵意见,项目地址 https://github.com/fanqingxuan/go-gin
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/1063998
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.