对于一些用PHP编写的REST API,我被要求创建Swagger文档,由于我不知道向这些现有API添加注释并创建此类文档的任何简便方法,因此我现在使用此编辑器生成了一些文档。
我保存了使用该编辑器创建的JSON和YAML文件,现在我需要创建最终的交互式Swagger文档(此语句听起来可能很幼稚又含糊)。
有人可以让我知道如何将Swagger JSON规范文件转换为实际的Swagger文档吗?
我在Windows平台上,对Ant / Maven一无所知。
Answers:
swagger-codegen
当我正在寻找一种工具来执行此操作时,我不满意,因此我编写了自己的工具。看看bootprint-swagger
相比之下,主要目标swagger-codegen
是提供一个简单的设置(尽管您需要nodejs)。而且应该容易地调整样式和模板以满足自己的需求,这是bootprint -project的核心功能
spectacle
从
尝试使用redoc-cli。
我用的是引导记录,OpenAPI的由我产生了一堆的文件(bundle.js
,bundle.js.map
,index.html
,main.css
和main.css.map
),然后你可以将其转换成一个单一的.html
使用文件的HTML在线生成一个简单的index.html
文件。
然后,我发现redoc-cli非常易于使用,并且输出确实是2个很棒的,一个漂亮的index.html文件。
安装:
npm install -g redoc-cli
用法:
redoc-cli bundle -o index.html swagger.json
npx redoc-cli ...
更可靠。
查看漂亮的赃物
它有
我当时在看Swagger编辑器,以为它可以导出预览窗格,但事实证明它不能。所以我写了自己的版本。
完全披露:我是该工具的作者。
allOf
在文档中的任何使用都会产生undefined
,即使在最简单的情况下(“合并”单个对象,也就是根本不使用allOf
)。
allOf
为您推出了功能。一探究竟。
一切都太困难或记录不好,所以我用一个简单的脚本swagger-yaml-to-html.py解决了这个问题,它的工作原理是这样
python swagger-yaml-to-html.py < /path/to/api.yaml > doc.html
这是针对YAML的,但对其进行修改以与JSON配合使用也是微不足道的。
请参阅GitHub上的swagger-api / swagger-codegen项目;项目README显示了如何使用它生成静态HTML。请参阅生成静态html api文档。
如果要查看swagger.json,可以安装Swagger UI并运行它。您只需将其部署在Web服务器上(从GitHub复制存储库后的dist文件夹),然后在浏览器中查看Swagger UI。这是一个JavaScript应用。
我花了很多时间并尝试了许多不同的解决方案-最终,我这样做了:
<html>
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swagger-ui-dist@3.17.0/swagger-ui.css">
<script src="//unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js"></script>
<script>
function render() {
var ui = SwaggerUIBundle({
url: `path/to/my/swagger.yaml`,
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIBundle.SwaggerUIStandalonePreset
]
});
}
</script>
</head>
<body onload="render()">
<div id="swagger-ui"></div>
</body>
</html>
您只需要从同一位置提供路径/到/my/swagger.yaml。
(或使用CORS标头)
您也可以从以下网址下载swagger ui:https : //github.com/swagger-api/swagger-ui,使用dist文件夹,修改index.html:更改构造函数
const ui = SwaggerUIBundle({
url: ...,
进入
const ui = SwaggerUIBundle({
spec: YOUR_JSON,
现在dist文件夹包含您需要的所有内容,可以按原样分发
看一下这个链接:http: //zircote.com/swagger-php/installation.html
如果您需要其他帮助,请随时询问。
有一个小的Java程序,可以从yaml文件生成文档(adoc或md)。
Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder()
.withMarkupLanguage(MarkupLanguage.ASCIIDOC)
.withSwaggerMarkupLanguage(MarkupLanguage.ASCIIDOC)
.withOutputLanguage(Language.DE)
.build();
Swagger2MarkupConverter builder = Swagger2MarkupConverter.from(yamlFileAsString).withConfig(config).build();
return builder.toFileWithoutExtension(outFile);
不幸的是,它仅支持OpenAPI 2.0,但不支持OpenAPI 3.0。