swagger-codegen generate -i <path to your swagger file> -l html2 -o <path to output location>
modules/swagger-codegen/src/main/resources/htmlDocs2
文件夹复制到其他位置,例如:cp -R modules/swagger-codegen/src/main/resources/htmlDocs2 ~/templates
~/templates
中的.mustache
模板以符合您的要求。swagger-codegen generate -i <path to your swagger file> -l html2 -o <path to output location> -t <templates path>
,其中<templates path>
应为上面示例中的~/templates
。package.json
中,可以执行npm install spectacle-docs
;如果您想让它在任何地方都可用,请执行npm install -g spectacle-docs
。spectacle spec.yaml
,并进行相关设置(例如,指定生成目录、运行服务器、监视规范文件并根据需要更新等)。spec.yaml
指的是 Swagger 规范本身,可以用 JSON 或 YAML 语法表示。 - Charlie Reitzelswagger-codegen
命令,但是使用-l html
或-l html2
输出的结果不像Swagger UI那样具有交互性。url: "http://localhost:8000/swagger.yml"
要测试这个功能,您可以使用python3运行一个简单的HTTP服务器。
python3 -m http.server 8000 --directory public
在浏览器中打开http://localhost:8000/查看效果!
要将OpenAPI 3规范呈现为自包含的HTML文件,可以使用redoc-cli。您可以使用ReDoc的Petstore OpenAPI 3 spec作为示例。
mkdir -p -m 777 build && docker run --rm --user 1000 \
-v $PWD/build:/tmp/build -w /tmp/build \
-v $PWD/openapi.yaml:/tmp/openapi.yaml node:14-slim npx -q \
redoc-cli bundle /tmp/openapi.yaml
执行此操作将在您的当前目录中生成build/redoc-static.html
。
为避免等待安装,您还可以根据他们的 Dockerfile
使用 redoc-cli
构建自己的 Docker 镜像,或者在您的操作系统上安装 redoc-cli
(如果有 NodeJS),使用 npm install -g redoc-cli
。
更新: 实际上,在项目的 GitHub Docker registry 中有一个预构建的 Docker 镜像,例如 ghcr.io/redocly/redoc/cli:v2.0.0-rc.76
。
ReDoc 还具有 OpenAPI 2/Swagger 的兼容模式,因此上述内容也适用于Petstore OpenAPI 2 spec。
[ReDoc Compatibility mode]: Converting OpenAPI 2.0 to OpenAPI 3.0
另外,还有仅支持OpenAPI 2的Spectacle以及其官方Docker镜像。它可以类似地使用:
mkdir -p -m 777 build && docker run --rm --user 1000 \
-v $PWD/build:/tmp/build \
-v $PWD/swagger.yaml:/tmp/swagger.yaml sourcey/spectacle \
spectacle -t /tmp/build /tmp/swagger.yaml
code.jquery.com
加载jQuery在我的端上有些缓慢的原因)。├── index.html
├── javascripts
│ ├── spectacle.js
│ └── spectacle.min.js
└── stylesheets
├── foundation.css
├── foundation.min.css
├── spectacle.css
└── spectacle.min.css
我通常使用https://editor.swagger.io/进行操作,无需安装任何东西。
将您的yml文件复制到编辑器中,选择“生成客户端> html2”,它将生成一个zip文件中的静态html文件。
静态文档在2.0版本中已经实现。可以到这里的./bin/static-docs.sh查看:
https://github.com/swagger-api/swagger-codegen/tree/master/bin
我一直在使用OpenAPI Generator CLI Docker Image https://github.com/OpenAPITools/openapi-generator
它可以生成服务器、客户端和文档。对于每种语言,都有模板文件,因此您可以根据需要修改其行为。
我设法生成了一个Python-Flask服务器,并自主托管了所生成的文档。
下面的代码将生成一个包含客户端代码示例的HTML文件。
USER=$(shell id -u)
GROUP=$(shell id -g)
MDIR=$(shell pwd)
docker run --rm --user ${USER} -u\:${GROUP} \
-v ${MDIR}:/local openapitools/openapi-generator-cli generate \
--package-name EXAMPLE \
-t /local/.openapi-generator-html-client/ \
-i /local/EXAMPLE.v1.yaml \
-g html2 \
-o /local/openapi_docs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="SwaggerIU" />
<title>SwaggerUI</title>
<link rel="stylesheet" href="https://esm.sh/swagger-ui@4.19.0/dist/swagger-ui.css" />
</head>
<body>
<div id="swagger-ui"></div>
<script type="importmap">
{
"imports": {
"swagger-ui-dist": "https://esm.sh/swagger-ui-dist@4.19.0/",
}
}
</script>
<script type="module" src="./main.js"></script>
</body>
</html>
将您的url: <...>
添加到openapi文件中。
// main.js
// @ts-check
import swagger from "swagger-ui-dist"
const ui = swagger.SwaggerUIBundle({
url: 'https://petstore3.swagger.io/api/v3/openapi.json',
dom_id: '#swagger-ui',
})
swagger-ui-dist
启用自动完成功能,您可以通过运行npm init -y
来初始化npm,然后使用npm i -D @types/swagger-ui-dist
进行安装。