簡體   English   中英

如何從 swagger 文檔生成 static html 文件?

[英]How to generate a static html file from a swagger documentation?

我創建了一個 Swagger 文檔,其中包含一個yaml文件,位於:

api/swagger/swagger.yaml

現在我想分享一個 static HTML 文檔及其定義,但在swagger 項目上聲明,他們根本不打算支持 HTML 生成。

如何從 Swagger 項目生成 static HTML 文件?

我能想到的最簡單的方法是使用Swagger Editor

  1. 轉到: https : //editor.swagger.io
  2. 單擊頂部菜單欄中的“文件”,然后選擇“導入文件”
  3. 導入后,點擊頂部菜單欄中的“生成客戶端”,然后選擇“HTML”或“HTML2”生成靜態HTML文檔

editor.swagger.io 使用 generator.swagger.io 生成 API 客戶端、服務器存根和文檔,generator.swagger.io 由開源項目Swagger Codegen 提供支持

  1. 下載https://github.com/swagger-api/swagger-ui - 感興趣的文件夾是“ dist
  2. 將 Swagger JSON 復制到 dist 文件夾中
  3. 打開 index.html 並將文件底部標簽內的 URL 值更改為./swagger.json (或任何您的 swagger json 調用)(請參閱此處
  4. 主機上線! (或啟動本地服務器以查看輸出)。

有可以生成靜態adoc文件的swagger2markup-cli

確保您已安裝 Java 運行時。 (我正在使用Java(TM) SE Runtime Environment (build 1.8.0_111-b14) )。

你取罐子:

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

您是否嘗試將其導出以從不同的服務創建單個文檔? 如果是,替代方案可能是https://github.com/varghgeorge/microservices-single-swagger 這個簡單的 springboot 微服務將基於 YAML 配置在一個地方顯示所有 swagger 文檔(來自不同服務器)。

另一個答案建議Swagger Editor ,這很棒。 但是,要獲取要導入其中的單個文件:

  1. npm install -g @apidevtools/swagger-cli
  2. swagger-cli bundle openapi.yaml --outfile./openapi-expanded.json --type json

上面的命令假定您的根文件名為openapi.yaml並且您想要一個 output JSON 文件openapi-expanded.json :您將導入 JSON。

使用這樣的 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 上托管它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM