[2024 年] 有哪些大家觉得好用的 Go Web 框架/脚手架? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ginakira
V2EX    Go 编程语言

[2024 年] 有哪些大家觉得好用的 Go Web 框架/脚手架?

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

    在仅考虑 HTTP API 开发的前提下,大家有什么推荐的 Golang Web 框架或脚手架吗?

    如果不使用框架/脚手架自己组合的话,常用组件大家是如何选型的呢?

    43 条回复    2024-12-28 17:08:48 +08:00
    gouguoyin
        1
    gouguoyin  
       320 天前   1
    javalaw2010
        2
    javalaw2010  
       320 天前   5
    没一个好用的,就算做好了心理建设接受了有些残疾的脚手架,后面还得去接受残疾的 ORM ,我觉得人生苦短,不应该在这上面浪费时间,最后还是决定不用 golang 作为业务层了,只用来做一部分非常边缘且简单的服务。
    Hellert
        3
    Hellert  
       320 天前   3
    echo
    fgwmlhdkkkw
        4
    fgwmlhdkkkw  
       320 天前   1
    额,我正在搞一个,刚开始。

    - 不写 tag 的 binding 和校验
    - 自动的路由注册和导入(一点点代码生成,且不需要额外的命令)
    - 自动的 api 文档生成
    fgwmlhdkkkw
        5
    fgwmlhdkkkw  
       320 天前
    @fgwmlhdkkkw sql 层面确实很难抽象,我还在想怎么做。
    wudiiiii
        6
    wudiiiii  
       320 天前
    @fgwmlhdkkkw 我不用 orm ,只用 db/sql
    windcode
        7
    windcode  
       320 天前   1
    gowk
        9
    gowk  
       320 天前   1
    用 Go 做业务开发/后端 API ,唯一的劣势就是没有一个统一的标准,没有好用的脚手架
    Java 有 Spring Boot ,.NET 有 ASP.NET/Entity Framework ,Python 有 Django
    Go 现在也进入主流开发视野了,但这方面还是挺残废的,写业务没有其他语言好用
    snxq1995
        10
    snxq1995  
       320 天前   1
    kratos 习惯了依赖注入后就挺不错的。还有就是未开源的 tRPC 生态非常好用。
    aleimu
        11
    aleimu  
       320 天前   1
    kratos 和 go-zero 都支持了脚手架创建 http 和 grpc 的代码,但是太抽象了,定位问题和接口时要跳转很多次才能看到重点....我现在还是再用 gin+wire
    qq135449773
        12
    qq135449773  
       320 天前
    在 go 里写 DI ,理由是什么...
    fffq
        13
    fffq  
       320 天前
    go 里面加 Wire 太恶心了。。。
    codersdp1
        14
    codersdp1  
       320 天前
    蹲一个答案,主要是 orm 这块
    mightybruce
        15
    mightybruce  
       320 天前   1
    中小型公司没必要用什么 DI, 另外 DI 这种东西说实话就是为了控制人的,好让你们成为像 Java 那样的 curd boy ,
    DI 的确也有好处,项目模块化更明显,剥离出业务逻辑,使得分工更明确。

    不过我想说这种脚手架真的没必要学,因为你到一个自研实力还不错的公司,这种东西都会有核心成员研发的,然后让其他人成为工具人,哈哈。

    几个 web 框架比如 gin, echo, beego 要会点,其他的都可以自己造的。
    xsen
        16
    xsen  
       320 天前   1
    go-zero 重度用户
    楼上 n 多人还在纠结 orm ,真的大可不必gpt 类出来就是节省这些方面的时间的

    可以自动生成 http/grpc 框架代码,若喜欢一样可以生成 model 代码。这就够了
    rust
        17
    rust  
       320 天前   1
    GoFiber + Ent 吧
    me1onsoda
        18
    me1onsoda  
       320 天前
    @mightybruce DI 是什么? dependency injection ?
    uds9u32br
        19
    uds9u32br  
       320 天前   1
    如果是很大型的项目确实有点头疼,一般的 web 应用搞个 httprouter 都行,又不是非要什么 spring 一样的东西
    ginakira
        20
    ginakira  
    OP
       320 天前
    @fgwmlhdkkkw 不写 tag 的 binding 和校验听起来很有趣,请问是通过什么方式做呢
    mightybruce
        21
    mightybruce  
       320 天前
    @me1onsoda 是的, 这方面 go 有好几个, 一些业务团队会把 DI 用到各个 web 框架上并组成自己的脚手架,

    常见的 DI 有 google/wire(代码生成), uber-go/dig (反射)
    GopherDaily
        22
    GopherDaily  
       320 天前
    紫薇,答应我,不要为两抽象而抽象,好吗?
    i4color
        23
    i4color  
       320 天前   1
    gin+xorm
    sofukwird
        24
    sofukwird  
       320 天前 via Android   1
    chen11
        25
    chen11  
       320 天前
    难受,java 转的 go 。感觉 go 是一个项目一个规范
    johng
        26
    johng  
       320 天前   4
    yifeia     27
    yifeia  
       320 天前   1
    gozero 开发中用的比较多
    字节的 hertz 和 Kitex 文档看着还可以,用了一下感觉也能用
    bv
        28
    bv  
       320 天前   1
    ZxykM
        29
    ZxykM  
       320 天前   1
    只自己用的话,pocketbase 是个不错的项目,我现在正在用
    tbxark
        30
    tbxark  
       320 天前   1
    自己撸了一个 https://github.com/TBXark/sphere, 基于 proto 定义,生产 go 代码和 api 文档,没事就往里面加点东西。
    wen20
        31
    wen20  
       320 天前   3
    gin+gorm
    FrankAdler
        32
    FrankAdler  
       320 天前   1
    echo+entgo
    Breacher
        33
    Breacher  
       319 天前 via iPhone   1
    ORM 只用 SQLBoiler, 最大的特色是 db schema first 和 100% type safe. 公司里从弱类型语言转 Go 的同事喜欢用 gorm
    fgwmlhdkkkw
        34
    fgwmlhdkkkw  
       319 天前   1
    @ginakira 指针偏移……
    qloog
        35
    qloog  
       319 天前   1
    框架: https://github.com/go-eagle/eagle 支持 http 和 gRPC, 关键是有脚手架,各种代码不用自己 copy 后再去修改了

    数据库:gorm 使用 gorm/gen 可以链接 db 生成 model 和基础的操作方法,避免 SQL 注入,关键是可以通过自定义 sql 生成代码,比如复杂的 多条件 sql 查询
    layxy
        36
    layxy  
       319 天前   1
    gofiber+ent
    Dogtler
        37
    Dogtler  
       319 天前   2
    jarvanluo
        38
    jarvanluo  
       319 天前
    @javalaw2010 #2 想问一下,那业务层目前你是用哪个呢
    IIInsomnia
        39
    IIInsomnia  
       319 天前   1
    gvison
        40
    gvison  
       319 天前   1
    div class="reply_content">集成 gin+gorm 的开发框架 https://github.com/zhufuyi/sponge ,生成代码功能非常强大,如果开发只有 CRUD api 服务,不需要编写任何 go 代码就可以编译并部署到 linux 服务器、docker 、k8s 上。sponge 提供了一站式项目开发(生成代码、开发、测试、api 文档、部署),大幅提高了开发效率和降低了开发难度。
    feikeq
        41
    feikeq  
       313 天前
    iris 就不错呀。
    pike0002
        42
    pike0002  
       300 天前
    gin + gorm
    kingcanfish
        43
    kingcanfish  
       289 天前
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1068 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 18:20 PVG 02:20 LAX 11:20 JFK 14:20
    Do have faith in what you're doing.
    ubao 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