• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fxjson
V2EX  ›  程序员

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

  •  
  •   fxjson · Aug 10, 2024 · 2320 views
    This topic created in 646 days ago, the information mentioned may be changed or developed.

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

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

    现在 go 自身已经支持了结构化日志,还没来得及改造
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5733 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 03:01 · PVG 11:01 · LAX 20:01 · JFK 23:01
    ♥ Do have faith in what you're doing.