gin+gorm+zerolog+goredis 轻量级框架开发

48 天前
 fxjson

小弟不才,上班之余用 go 搭建了一套开箱即用的 api 接口框架,主要特点

  1. 路由层使用主流了的 gin 框架
  2. db 操作引入了国内比较主流的 gorm
  3. redis 使用了 go-redis ,个人觉得比 redigo 好点儿,主要是有命令方法,可维护性强一些
  4. 引入了 zerolog,记录日志,做开发时间长了,感觉没有日志简直就是要命,日志没有 requestId 之类的也很痛,所以在框架中规避了这个痛点,并且日志也区分了业务日志,panic 日志,access 请求日志,以及日志级别
  5. 引入了定时任务,便于开发一些定时任务,使用 job 定义定时任务的结构和业务
  6. 引入 validator 验证,结合 gin 自带的 shoudbind 相关方法,进一步做了优化,支持自定义提示字段名字,并且支持在 shoudbind 之外使用 validator
  7. 使用 google/uuid 生成 requestId,requestId 在日志以及响应 json 结果中提现,支持自定义 requestId 字段名字,如改成 traceId
  8. 结构化响应结果,响应结果包含 code 、message 、data 三个字段,也支持自定义响应字段名字,如改成 status 、msg 、result ,另外对 gin 自带的 ctx.JSON 进行了封装,使用 httpx.Ok 或者 http.Error 等
  9. 引入了 event 事件,可以对主业务之外的逻辑使用事件方式编写

欢迎各位老师提出宝贵意见,项目地址 https://github.com/fanqingxuan/go-gin

1056 次点击
所在节点    程序员
2 条回复
yikosong
48 天前
nice
ashin
48 天前
不错,我之前也做了个自用的开箱即用,用来快速搭建开发 api 和 go template 服务,取名叫 pink-lady: https://github.com/axiaoxin-com/pink-lady

现在 go 自身已经支持了结构化日志,还没来得及改造

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1063998

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX