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 · 3 天前 · 3213 次点击

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

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

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

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

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

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

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

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

    数据库:gorm 使用 gorm/gen 可以链接 db 生成 model 和基础的操作方法,避免 SQL 注入,关键是可以通过自定义 sql 生成代码,比如复杂的 多条件 sql 查询
    layxy
        36
    layxy  
       2 天前   ❤️ 1
    gofiber+ent
    Dogtler
        37
    Dogtler  
       2 天前   ❤️ 2
    jarvanluo
        38
    jarvanluo  
       2 天前
    @javalaw2010 #2 想问一下,那业务层目前你是用哪个呢
    IIInsomnia
        39
    IIInsomnia  
       2 天前   ❤️ 1
    gvison
        40
    gvison  
       1 天前   ❤️ 1
    集成 gin+gorm 的开发框架 https://github.com/zhufuyi/sponge ,生成代码功能非常强大,如果开发只有 CRUD api 服务,不需要编写任何 go 代码就可以编译并部署到 linux 服务器、docker 、k8s 上。sponge 提供了一站式项目开发(生成代码、开发、测试、api 文档、部署),大幅提高了开发效率和降低了开发难度。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2764 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:40 · PVG 20:40 · LAX 04:40 · JFK 07:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.