我使用一个yaml
文件创建了一个Swagger文档,该文件位于:
api/swagger/swagger.yaml
现在我想分享一个静态 HTML 文档及其定义,但在 Swagger 项目 上已经声明,他们不打算支持 HTML 的生成。
如何从 Swagger 项目生成一个静态 HTML 文件?
我使用一个yaml
文件创建了一个Swagger文档,该文件位于:
api/swagger/swagger.yaml
现在我想分享一个静态 HTML 文档及其定义,但在 Swagger 项目 上已经声明,他们不打算支持 HTML 的生成。
如何从 Swagger 项目生成一个静态 HTML 文件?
我能想到的最简单的方法是使用Swagger编辑器:
editor.swagger.io使用generator.swagger.io生成API客户端、服务器存根和文档,而generator.swagger.io则由开源项目Swagger Codegen提供支持。
./swagger.json
(或者你的Swagger JSON文件名)(参见这里)有一个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
转换成一个html
文件:asciidoctor *.adoc
你可能需要安装它,因为我正在使用Ubuntu,我可以通过以下方式进行安装:
sudo apt-get -qq install asciidoctor
您是想将不同服务的文档导出为单个文档吗?如果是,可以尝试使用https://github.com/varghgeorge/microservices-single-swagger。这个简单的springboot微服务将根据YAML配置,在一个地方展示所有不同服务器的Swagger文档。
Swagger Editor
,这很好。但是,要获取一个单独的文件导入到其中:
npm install -g @apidevtools/swagger-cli
swagger-cli bundle openapi.yaml --outfile ./openapi-expanded.json --type json
openapi.yaml
,并且您想要一个输出JSON文件openapi-expanded.json
:该JSON文件就是您要导入的文件。<!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上。
docker run --rm -v $PWD:/spec redocly/cli build-docs <your_swagger.yaml>
GET
查询参数方面表现得相当糟糕... - Haroldo_OK