咨询: Go 开发 api 管理工具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
loyth06
V2EX    程序员

咨询: Go 开发 api 管理工具

  •  
  •   loyth06 2024-04-02 14:05:52 +08:00 3323 次点击
    这是一个创建于 556 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,我是一名 Go 后端开发程序员,最近想使用 Go 语言开发一款 api 管理软件(桌面,Web ),类似 Apifox ,Postman ,RapidAPI ,Insomnia...等等 api 管理工具

    为什么开发:

    1. 后端开发,方便管理开发的 api
    2. 空闲时间多,提升开发能力,积累技术栈
    3. 为后续项目"api 自动化"开发打基础

    想咨询一下各位技术同行们,你们平时工作过程中使用 api 管理工具频繁吗?开源的还是不开源的呢?

    第 1 条附言    2024-04-02 17:26:55 +08:00
    感谢各位的回复,这里做一下总结:
    1. 使用 Protobuf ,swagger 之类的做定义接口导出
    2. 将导出的接口再导入 apifox ,postman 之类 api 工具管理
    19 条回复    2024-04-03 18:30:17 +08:00
    MIUIOS
        1
    MIUIOS  
       2024-04-02 14:19:07 +08:00   1
    以前都是手写文档,后面实在累了, 用 swagger 生成 json 再导入到 apifox 里去管理维护,简单明了,而且 apifox 也支持定时导入。
    mohuani
        2
    mohuani  
       2024-04-02 14:28:51 +08:00
    1 、一般都是前后端第一次对接的时候用下,然后就是出问题的时候,再看一下原来的 api 文档,看看是前端还是后端偷偷改代码了。
    2 、还有就是自己可能会写一些本地的 api 脚本,时间长了再用的时候,记不住参数了,再看一下文档,不过这些基本都用 postman 解决了
    smartdoc647
        3
    smartdoc647  
       2024-04-02 15:13:22 +08:00
    go 语言做 web 开发,api 管理工具不是最重要的,生成 API 文档的过程很烦,go swagger 页要求程序员写一堆的注释。
    我自己是 java 文档生成工具 smart-doc 的作者。目前也只一个主力 go 语言的应用开发者。管理工具其实已经很多了,针对 go 语言文档生成端非常的弱
    MIUIOS
        4
    MIUIOS  
       2024-04-02 15:20:23 +08:00
    @smartdoc647 是的 在方法上拉一坨的注释。。。
    tangtang369
        5
    tangtang369  
       2024-04-02 15:48:09 +08:00
    swagger 不好用吗
    Rehtt
        6
    Rehtt  
       2024-04-02 15:55:25 +08:00 via Android
    我这是用 protobuf 定义接口,生成 swagger 再导进 apifox
    StarUDream
        7
    StarUDream  
       2024-04-02 16:02:19 +08:00   1
    我们也是用 Protobuf 定义接口,然后用 https://github.com/grpc-ecosystem/grpc-gateway 生成文档,相较于 Swaggo 写注释体感上好不少
    lolizeppelin
        8
    lolizeppelin  
       2024-04-02 17:47:04 +08:00
    我感觉用 ast 解析注释, 配合反射读字段 tag 的形式生成 Swaggo 更灵活一点
    tangqiu0205
        9
    tangqiu0205  
       2024-04-02 17:51:17 +08:00
    @Rehtt #6 同样
    luozic
        10
    luozic  
       2024-04-02 17:54:23 +08:00
    基于 swagger 的 openapi 标准再搓呗,这个是现在的标准,都已经到 3.0 了 GitHub 上有协议
    veni2023
        11
    veni2023  
       2024-04-02 17:54:33 +08:00
    apipost 不错,分享方便,权限可控,还有提取返回,自动填充其他 api 相同字段名说明这个方便的功能
    lrh3321
        12
    lrh3321  
       2024-04-02 18:10:37 +08:00
    typespec 写,然后转成 openapi3 导入 Insomnia
    wujianhua22
        13
    wujianhua22  
       2024-04-02 18:17:05 +08:00
    1 、go-swag 用着很不爽,我们都用 protobuf 生成接口文档。然后在程序里面加一个 swagger 的 UI ,静态部署就可以了。
    2 、另外不建议做 API 管理软件。现在的 API 管理软件已经饱和了,除非你能解决痛点或者又更好的管理方案,比如实现更高级的 API 版本管理等。
    3 、也可以做做类似 Apifox Helper 这种工具,java 可以通过注解识别程序代码里面的 handler/controller 去自动解析代码然后生成导出文件,go 这边我还不知道怎么实现,这种应该有一定的技术提升。
    cyrivlclth
        14
    cyrivlclth  
       2024-04-02 20:12:35 +08:00
    @totoro52 #4 瘪说了,java 那边 swagger 有注解,有些人还嫌弃,吹什么代码侵入性,非要在方法上拉一坨注释
    layxy
        15
    layxy  
       2024-04-03 08:39:15 +08:00
    @lolizeppelin 问题 go 不像 java 有框架和约束写法,go 的 web 框架基本没啥约束,参数绑定这块灵活性很高,很难识别和生成文档
    Desdemor
        16
    Desdemor  
       2024-04-03 09:12:36 +08:00
    1 普通版本:swag 生成,导入到 apifox
    2 框架自带:goframe 里面带了个注入的好像,没细看
    lolizeppelin
        17
    lolizeppelin  
       2024-04-03 09:37:54 +08:00
    @layxy
    其实可以,解析服务组件的时候,限定函数参数个数,类型返回值与个数就行
    微服务框架的基本做法
    ben666
        18
    ben666  
       2024-04-03 09:42:37 +08:00
    go api 网关 bfe 了解下
    bugcreator
        19
    bugcreator  
       2024-04-03 18:30:17 +08:00 via iPhone
    我们之前 Java 用的 yapi ,不知道是否有 go 版本,不过应该可以作为参考。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2623 人在线   最高记录 6679/span>       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 15:19 PVG 23:19 LAX 08:19 JFK 11:19
    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