大张旗鼓地生成静态文档


72

有没有为swagger 2.0创建静态文档的方法?也许就像editor.swagger.io上的“预览”。

我需要获取静态html文件,以便可以将它们包含在某些静态文档中。

到目前为止,我还没有找到一种方法来执行此操作。我看到有swagger-codegens静态文档,但这仅适用于swagger <= 1.2。

Answers:


35

使用swagger-codegen:

swagger-codegen generate -i <path to your swagger file> -l html2 -o <path to output location>

如果您决定自定义HTML模板:

  1. github克隆swagger-codegen项目
  2. modules/swagger-codegen/src/main/resources/htmlDocs2文件夹复制到另一个位置,例如:cp -R modules/swagger-codegen/src/main/resources/htmlDocs2 ~/templates
  3. 修改.mustache模板~/templates以适合您的要求。
  4. 运行:swagger-codegen generate -i <path to your swagger file> -l html2 -o <path to output location> -t <templates path>for<templates path>应该~/templates在上面的示例中。

1
在运行步骤4之前,我必须通过执行“ brew install swagger-codegen”(Mac OS High Sierra)安装swagger-
codegen

19

如果您只想直接生成静态文档,请考虑使用Spectacle

npm install spectacle-docs如果您要在中放置脚本package.json,或者该脚本npm install -g spectacle-docs应随处可用。

然后,您可以运行spectacle spec.yaml,其中包含用于构建到特定目录,运行服务器和/或监视规格文件并根据需要进行更新的选项。


请原谅初学者的问题,spec.yaml是什么,它可以由招摇生成吗?在我的情况下,我在由Spring管理的Java端点上仅具有注释,并且Swagger页面神奇地显示。TIA
chrisinmtown,

@chrisinmtownspec.yaml指的是Swagger规范本身,可以用JSON或YAML语法表示。
查理·里策

似乎该项目已失效并且不支持OpenAPI 3.0
lssilva '20



4

您可以swagger-codegen像其他人提到的那样使用该命令,但是从使用中获得的输出-l html-l html2与Swagger UI一样不是交互式的。

要获得交互式的静态页面(如Swagger UI),请按照以下步骤操作:

安装

  • 转到https://github.com/swagger-api/swagger-ui/releases并以.zip文件下载最新版本。
  • 解压缩该文件,然后将./dist文件夹中的所有内容复制到要提供Web服务器的目录中。例如,Gitlab Pages需要将其放在存储库中的./public文件夹中。
  • 你copy过来swagger.yml文件到./public文件夹。
  • 打开./public/index.html文件,并将URL更新为swagger文件在Web服务器上的位置。对于本地服务器,可能是这样的:url: "http://localhost:8000/swagger.yml

测试

为了测试这一点,您可以使用python3运行一个简单的HTTP服务器。

python3 -m http.server 8000 --directory public

打开http:// localhost:8000 /并签出!




0

“静态”文档可能意味着几件事。

如果您正在寻找交互式显示(例如编辑器的预览),则可以使用swagger-ui(https://github.com/swagger-api/swagger-ui)。

虽然在接下来的几周内将提供2.0版本的代码,但尚未实现更多静态文档的代码生成代码(例如,没有“立即尝试”按钮)。


1
好,谢谢。这是我需要的2.0静态文档,所以我想我要等几个星期。
romeovs 2014年

1
好的,我不确定,因为swagger-editor的预览模式还具有执行操作的能力,这就是您在原始问题中所指的内容。
罗恩


0

单击预览文档,使用chrome插件“保存页面WE”(右键单击页面->“保存页面我们”),结果是单个html文件(不可点击,因此您必须单击想要显示的所有内容)。


0

OpenAPI 3

要将OpenAPI 3规范呈现为独立的HTML文件,可以使用redoc-cli。您可以使用ReDoc的Petstore OpenAPI 3规范作为示例。

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在您的当前目录中生成。

为了避免等待安装,您还可以redoc-cli根据自己构建一个Docker映像Dockerfile,或者在其中安装redoc-cliNodeJS的情况下安装到您的OS。npm install -g redoc-cli

OpenAPI 2

ReDoc还具有OpenAPI 2 / Swagger的兼容模式,因此以上内容也适用于Petstore OpenAPI 2规范

[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

我现在确实理解此答案的不足。这是唯一使用redoc-cli的建议,它对我有用。
1月Vlcinsky

-3

在pom中包括对招摇的依赖。

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.4.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.4.0</version>
        </dependency>

并尝试点击-> https://editor.swagger.io/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.