写 go 项目时 swaggo 生成 swagger 文档的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
broli7753
V2EX    Go 编程语言

写 go 项目时 swaggo 生成 swagger 文档的问题

  •  
  •   broli7753 2025 年 1 月 3 日 2311 次点击
    这是一个创建于 372 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如

    问题

    这个路由路径有办法自动提取过来么。 因为我在 net/http 定义路由时已经写过一遍路径,完了还要在处理方法的地方再写一次 
    12 条回复    2025-01-06 14:54:35 +08:00
    wangritian
        1
    wangritian  
       2025 年 1 月 3 日
    印象中没办法
    写一个外部小工具扫描文件+正则匹配+插入或修改 @Route 就好,怕改出问题就做个备份
    StoneHuLu
        2
    StoneHuLu  
       2025 年 1 月 3 日
    fork 一下 swaggo ,找到这地方的源码自己改一下实现呗,运行 swaggo 的时候,直接扫你项目文件,把代码文件内容解析一下
    StoneHuLu
        3
    StoneHuLu  
       2025 年 1 月 3 日
    @StoneHuLu #2 然后传 GitHub ,以后就用自己的特供版 swaggo
    Ayanokouji
        4
    Ayanokouji  
       2025 年 1 月 3 日
    这种写法的 swagger 没办法的,就是这么麻烦

    可以看下 https://huma.rocks ,这个是用代码生成文档,类似的框架还有 fuego (支持 html tempalte )

    还有一种思路是 基于 openapi 文档生成 go 代码 https://github.com/oapi-codegen/oapi-codegen
    broli7753
        5
    broli7753  
    OP
       2025 年 1 月 3 日
    @wangritian @StoneHuLu 这种自己写匹配, 要动手能力比较强。

    想求个 简单的,

    顺便了解下,看看大家都用什么姿势 来解决文档问题。
    wangritian
        6
    wangritian  
       2025 年 1 月 3 日
    @broli7753 这个不算难,尤其现在有大模型帮助
    我是用 ts 写了一个代码生成工具,解析 swagger.json 文档,生成 go/java/ts 三种语言的定制 sdk
    因为注释也搬运到 sdk 中所以不需要额外维护文档了,但你主楼那一步不可省
    lllllliiii
        7
    lllllliiii  
       2025 年 1 月 3 日
    以前写过一个 demo ,可以参考一下 https://github.com/fzdwx/swgin
    broli7753
        8
    broli7753  
    OP
       2025 年 1 月 3 日
    @fzdwx 正在阅读大佬的代码。
    @Ayanokouji huma 貌似对当前代码 改动比较大,oapi-codegen 这个工作量更大了
    Ayanokouji
        9
    Ayanokouji  
       2025 年 1 月 3 日
    @broli7753
    > huma 貌似对当前代码 改动比较大
    是的,除非项目初期就采用,后续不好改
    oapi-codegen 也是没法修改,开发顺序都发生变化了
    server
        10
    server  
       2025 年 1 月 3 日
    虽然但是, 仍 pb 里吧
    buffzty
        11
    buffzty  
       2025 年 1 月 3 日
    你这个需求要改 swaggo 源码, 在解析 route 包 ast 的时候保存函数名->route 信息映射,在解析到 api 函数加上去就行
    我以前就这么做的,我现在是在 postman 里写接口用 postman 当文档
    smartdoc647
        12
    smartdoc647  
       2025 年 1 月 6 日
    我现在也主要写 go , 这种路由,go 也没有注解,搞文档生成就是比较烦, 注释也要写一大坨。我以前搞 java 开发开源的 smart-doc 在 spring 这种技术栈上生成接口文档使用起来就很爽。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2599 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 10:45 PVG 18:45 LAX 02:45 JFK 05:45
    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