如何从swagger文档生成一个静态html文件?

xmd2e60i  于 2022-11-06  发布在  其他
关注(0)|答案(6)|浏览(640)

我已经在以下目录下创建了一个带有yaml文件的Swagger文档:

api/swagger/swagger.yaml

现在我想分享一个静态的HTML文档及其定义,然而在swagger项目中声明,他们根本不打算支持HTML生成。
如何从Swagger项目生成静态HTML文件?

ymzxtsji

ymzxtsji1#

我能想到的最简单的方法是使用Swagger Editor
1.转到:https://editor.swagger.io
1.点击顶部菜单栏中的“文件”,然后选择“导入文件”
1.导入后,单击顶部菜单栏中的“Generate Client”(生成客户端),然后选择“HTML”或“HTML2”生成静态HTML文档
editor.swagger.io 使用generator.swagger.io生成API客户端、服务器存根和文档,generator.swagger.io由开源项目Swagger Codegen提供支持。

t40tm48m

t40tm48m2#

1.下载https://github.com/swagger-api/swagger-ui-感兴趣的文件夹是“dist
1.将Swagger JSON复制到dist文件夹中
1.打开index.html,将文件底部标记中URL的值更改为./swagger.json(或者任何swagger json的名称)(参见此处)
1.主机联机!(或启动本地服务器以查看输出)。

k4emjkb1

k4emjkb13#

swagger2markup-cli可以生成一个静态的adoc文件。
确保您安装了Java运行时。(我使用Java(TM) SE Runtime Environment (build 1.8.0_111-b14))。
你去拿jar:

wget https://jcenter.bintray.com/io/github/swagger2markup/swagger2markup-cli/1.1.0/swagger2markup-cli-1.1.0.jar

您可以通过以下方式使用它生成静态adoc

java -jar ~/your/path/swagger2markup-cli-1.1.0.jar convert  -i api/swagger/swagger.yaml --outputFile static-swagger

然后,可以通过asciidoctor将该adoc文件转换为html文件:

asciidoctor *.adoc

您可能需要安装它,因为我使用Ubuntu,我可以通过:

sudo apt-get -qq install asciidoctor
0yycz8jy

0yycz8jy4#

您是否尝试将其导出以从不同的服务创建单个文档?如果是的话,可以使用https://github.com/varghgeorge/microservices-single-swagger。这个简单的springboot微服务将根据YAML配置在一个位置显示所有的swagger文档(来自不同的服务器)。

kx7yvsdv

kx7yvsdv5#

另一个答案建议使用Swagger Editor,这很好。但是,要获得一个文件导入到其中:

  1. npm install -g @apidevtools/swagger-cli
  2. swagger-cli bundle openapi.yaml --outfile ./openapi-expanded.json --type json
    上面的命令假设您的根文件名为openapi.yaml,并且您需要一个输出JSON文件openapi-expanded.json:您将导入JSON。
avwztpqn

avwztpqn6#

使用如下HTML文件加载OpenAPI定义:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" type="text/css" href="//unpkg.com/swagger-ui-dist@3/swagger-ui.css">

  <title>Your App API v1</title>

<body>

  <div id="your-app-docs" />

  <script src="//unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js"></script>
  <script>

    window.onload = function () {

      const ui = SwaggerUIBundle({
        url: "openapi.yml",
        dom_id: "#your-app-docs",
        deepLinking: true,
      })

    }

  </script>

</body>

</html>

然后,您可以稍后将其托管在本地,或者使用Netlify等服务将其托管在Web上。

相关问题