Swagger可以根据现有的快速路由自动生成yaml吗?

slwdgvem  于 2023-04-30  发布在  其他
关注(0)|答案(6)|浏览(172)

我继承了一个现有的API,我想用swagger记录它,但我还不知道它的全部范围。Swagger(或其他中间件/工具)能否根据现有的快速路由自动生成yaml(用于swagger)?
对于我在其他问题上看到的,这似乎主要是一个手工作业,但我仔细检查,如果有人在这里找到了一个解决这个问题的方法。

oogrdqng

oogrdqng1#

我有自动生成Swagger json和手动编写它用于我帮助构建的API的经验。以下是根据我的经验得出的两者的优缺点。

Swagger自动生成文档:

我们将swagger-node-express模块与swagger-ui结合使用。https://www.npmjs.com/package/swagger-node-express
https://github.com/swagger-api/swagger-ui

优点

超级容易记录。只需在资源定义上方添加几行代码,文档(json)就会由模块自动生成。
缺点
当您使用此软件包时,您不再使用直上Express。您的路由定义必须通过Swagger模块进行定义,这会使您远离vanilla Express。

Swagger MANUAL文档生成:

我们只是将swagger-ui引入到项目中,并手动编写文档。
https://github.com/swagger-api/swagger-ui

优点

这种方法将文档与Express框架分离。Express端点的编写方式与通常的编写方式相同,Swagger文档的定义与Express框架是分开的。让你写纯快递。
缺点
文档的更改变得有点乏味,因为你是自己手动编写和更改yaml或json的。这比仅仅更新资源上面的几行代码要难一点。这种方法也更容易出现文档拼写错误,因为它完全是手动输入的。
如果您打算手动编写swagger文档,请使用下面的swagger编辑器来验证您的手动文档。
http://editor.swagger.io/#/

总结

对于这个API项目,我们首先使用swagger-node-express包自动生成文档。然而,我们意识到将swagger文档与express库分离对于使我们能够使用Express的所有特性和功能非常重要。我建议您手动编写文档,以便完全控制Swagger文档和您的应用将使用的Express Web框架。

vdzxcuhz

vdzxcuhz2#

有一个选择:您可以嵌入中间件,它将分析所有请求和响应并为您生成规范:https://github.com/mpashkovskiy/express-oas-generator
然后,您可以通过您的应用程序Swagger UI使用它,如

ep6jt1vc

ep6jt1vc3#

是!!!。你可以使用这个很棒的项目typescript-test。这里是sample app。克隆它,运行npm inpm run swagger,然后转到 /dist/swagger。json.完成。Swagger yaml和json是基于快速路由生成的!

dbf7pr2w

dbf7pr2w4#

使用express-sitemap-html,您可以自动生成一个简单的Open API定义(仅包括路由参数),并为现有express应用程序的所有路由安装Swagger UI。您只需要:

const sitemap = require('express-sitemap-html')
...
sitemap.swagger('Your app name', app) // given that app is an express instance

这种方法不是在运行时分析HTTP请求,而是检查express app示例和挂载的路由。

PRO您不需要执行提前请求来获取可用路由的更新列表。
CONs提供无类型参数特性。

wfsdck30

wfsdck306#

您可以使用swagger-autogen,这是一个允许您使用注解自定义类型的工具。缺点是您必须花费时间来学习如何添加文档。

相关问题