V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fxjson
V2EX  ›  程序员

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

  •  
  •   fxjson · 140 天前 · 1232 次点击
    这是一个创建于 140 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟不才,上班之余用 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

    2 条回复
    yikosong
        1
    yikosong  
       140 天前
    nice
    ashin
        2
    ashin  
       140 天前 via iPhone
    不错,我之前也做了个自用的开箱即用,用来快速搭建开发 api 和 go template 服务,取名叫 pink-lady: https://github.com/axiaoxin-com/pink-lady

    现在 go 自身已经支持了结构化日志,还没来得及改造
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2565 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 03:45 · PVG 11:45 · LAX 19:45 · JFK 22:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.