gin+gorm+zerolog+goredis 轻量级框架开发 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
fxjson
V2EX    程序员

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

  • /li>  
  •   fxjson 2024-08-10 15:32:25 +08:00 1826 次点击
    这是一个创建于 433 天前的主题,其中的信息可能已经有所发展或是发生改变。

    小弟不才,上班之余用 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  
       2024-08-10 19:08:38 +08:00
    nice
    ashin
        2
    ashin  
       2024-08-11 09:24:56 +08:00 via iPhone
    不错,我之前也做了个自用的开箱即用,用来快速搭建开发 api 和 go template 服务,取名叫 pink-lady: https://github.com/axiaoxin-com/pink-lady

    现在 go 自身已经支持了结构化日志,还没来得及改造
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2638 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 19ms UTC 04:20 PVG 12:20 LAX 21:20 JFK 00:20
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86