注解的方式生成 swagger 文档太麻烦,有没有 Go 模块类似 Python FastAPI 的自动生成文档的机制?

2020-11-26 13:08:41 +08:00
 DoctorCat
5259 次点击
所在节点    Go 编程语言
42 条回复
xuanbg
2020-11-26 13:10:41 +08:00
手写 MD 文档就不麻烦了,复制-粘贴改一改就好,效率飞起
qW7bo2FbzbC0
2020-11-26 13:23:45 +08:00
用 c# 或者 spring 多好,django 的 swagger 都不是很方便,因为这个原因弃用 go 做 web 服务
charmToby
2020-11-26 13:44:42 +08:00
同求,有类似机制的,楼主记得艾特我。
lingxi27
2020-11-26 14:00:41 +08:00
换种思路,文档->代码
DoctorCat
2020-11-26 14:08:36 +08:00
@lingxi27
@xuanbg

要的就是 swagger 在线发请求的测试功能,回到原始 doc 上那当然就不会有这个问题了…建议我手写 doc 仿佛在跟我说蒸汽机不好搞,还是继续坐马车吧 🤦‍♂️
DoctorCat
2020-11-26 14:12:12 +08:00
@hjahgdthab750 Python 的话 FastAPI 可以自动生成,不需要人肉介入。
qW7bo2FbzbC0
2020-11-26 14:17:26 +08:00
@DoctorCat #6 fastapi 不能像 flask django 那样直接用 py 文件启动吧,好像要在系统上装什么来着
qW7bo2FbzbC0
2020-11-26 14:20:09 +08:00
@hjahgdthab750 #7 没有超级用户权限,我选择绕开 fastapi,本来还是挺不错的项目
TangMonk
2020-11-26 14:21:45 +08:00
Ruby 的 grape 配合 swagger 异常好用,全自动生成,连注释都不写
haitaotao
2020-11-26 14:23:09 +08:00
如果是 api 的建议先使用 protobuf 等 idl 描述,再动生成文档和代码。

我们也是苦文档不更新久矣。最后搞了个[sniper 框架]( https://github.com/bilibili/sniper),具体的设计思路可以参考[这篇文章]( https://zhuanlan.zhihu.com/p/69029677)。在生产环境跑了两年多了,效果还不错。
charmToby
2020-11-26 14:24:16 +08:00
@hjahgdthab750 FastAPI 只需要安装 uvicorn 就可以直接 py 文件启动了。
wzw
2020-11-26 14:24:34 +08:00
qW7bo2FbzbC0
2020-11-26 14:27:13 +08:00
@charmToby #11 对对,线上没有 uvicorn,也没有安装的权限
siteshen
2020-11-26 14:47:10 +08:00
有几年没用 go 了,看到这个话题,回顾一下在 go 项目中使用 swagger 历程。
注:我也一直讨厌写不必要的 API 文档,尤其是 API 输入、输出格式等本应该能自动生成的文档。

1. 最初是自己写的代码,根据 request, response 对象生成 swagger.json 文件( python 也自己写过……):
https://www.v2ex.com/t/390148?p=1#r_4746014
2. 后来某个项目使用过 https://github.com/MarkSonghurst/swag (印象中某些 feature 支持不够好,我还改过少量代码)
3. 另外看到其他 v 友选择过 https://github.com/Tencent/APIJSON,也许以后会尝试?
https://v2ex.com/t/556593?p=2#r_7208890
reus
2020-11-26 14:59:06 +08:00
学习下标准库里 go/ast go/types 几个包,自己写一个就行,一两百行完事的程序,自己需要什么就写什么,何必到处找,你找到也未必合用。
herofire
2020-11-26 15:12:52 +08:00
smartdoc?
Biebe
2020-11-26 15:37:21 +08:00
用 protobuf 描述借口,protoc swagger 插件自动生成
tiedan
2020-11-26 15:46:01 +08:00
protobuf
lingxi27
2020-11-26 15:59:19 +08:00
@DoctorCat

你可能没完全明白我的意思,要不看看这个能不能帮到你
lingxi27
2020-11-26 16:00:04 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/729447

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX