如何从Swagger UI导出Swagger JSON/YAML文件?

sas*_*alm 24 swagger swagger-ui

如何导出Swagger定义文件(它应该是JSON或YAML文件)?我被要求这样做,而且我对Swagger只有粗略的了解.

我们确实有一个端点http://example.com//swagger/ui/index#!看起来像这样(截图不是我们真正的端点,但我不能发布):

在此输入图像描述

版本是api version: v1.

我看不到"导出"按钮.那么我该如何导出呢?

Hel*_*len 42

API定义的URL显示在Swagger UI的顶部栏中 - 在您的示例中它是

/v2/api-docs?group=full-petstore-api
Run Code Online (Sandbox Code Playgroud)

所以完整的URL似乎是

http://localhost:8080/v2/api-docs?group=full-petstore-api
Run Code Online (Sandbox Code Playgroud)


在较新版本的Swagger UI中,API定义的链接通常显示在API标题下方,因此您可以右键单击链接并另存为.

链接到Swagger UI 3.x中的API定义


如果您的Swagger UI没有指向API定义的可见链接,请查看页面源并查找url参数,例如:

const ui = SwaggerUIBundle({
  url: "https://petstore.swagger.io/v2/swagger.json",     // <-------
  dom_id: '#swagger-ui',
Run Code Online (Sandbox Code Playgroud)


如果您没有看到url或如果url是代码表达式,请打开浏览器开发工具,切换到" 网络"选项卡并禁用缓存.然后刷新页面,搜索API定义文件(swagger.json,swagger.yaml,api-docsHTTP请求中或类似).您可以按XHR过滤以缩小列表范围.

在浏览器开发工具的

  • 在新的 swagger 版本(“swagger”:“2.0”)中,您在网络跟踪中有“v1”、“v2”而不是“swagger.json”,...右键单击并在新选项卡中打开它,您可以查看带有 url 的 json:https://yourapi.yourdomain.com/api/swagger/docs/v2 (4认同)

Yas*_*N P 18

虽然它已经得到了回答并且它是正确的,但我想我会发布它的更详细的版本..希望这会有所帮助,

  1. 如果您确实有提供给 swagger UI 的 swagger json 文件,那么要生成 .yaml 文件,只需单击下面的链接,将您的 json 复制粘贴到编辑器中并下载 yaml 文件。这是一个直接的方法

链接:https : //editor.swagger.io/#

  1. 现在,您没有任何 swagger json 文件的第二种方式,那么以下步骤应该会有所帮助,

打开 swagger ui,检查(Shift+Ctrl+i),刷新页面,您将获得如下所示的选项卡

在此处输入图片说明

Network选项卡下选择XHR或 All 选项卡,检查文件api-doc?group=*并单击 subtab response。*现在复制 ap-doc?group.** 文件的内容并使用相同的编辑器链接转换为 yaml 文件

链接:https : //editor.swagger.io/#


Kev*_*ary 8

JSON 也可以内联在文档中,特别是对于 Swagger 2.0 版。如果您在浏览@Helen 的回答后没有找到任何内容,请尝试以下操作:

  1. 查看页面源代码
  2. 搜索"swagger""spec"

如果您看到一个<script type="application/json">包含类似于以下内容的标签,这实际上就是您的swagger.json内容。复制<script>标签内的所有内容并保存到一个名为 swagger.json 的文件中,你应该很高兴。

<script id="swagger-data" type="application/json">
{"spec":{"definitions":{},"info":{},"paths":{},"schemes":[],"swagger":"2.0"}}
</script>
Run Code Online (Sandbox Code Playgroud)


s g*_*s g 5

我正在使用 Django Rest Framework(所以pippackage django-rest-swagger==2.2.0),上面的答案还不够。有两种选择:

1) 使用开发者工具查看页面源码。当我到达http://localhost:8000/docs/终点时,我看到:

在此处输入图片说明

docs/终点在Django配置,所以它可能是你不同的。在深入研究细节时,我可以转到“响应”选项卡(在 Chrome 中)并向下滚动以找到实际的 JSON。它的价值在window.drsSpec

在此处输入图片说明

2)另一种(也许更简单)的方法是添加?format=openapi到我的端点,如https://github.com/marcgibbons/django-rest-swagger/issues/590 中所建议的

这将直接吐出您需要的JSON。我通过更改swagger字段将openapi其导入 Postman,该字段看起来有点像 hacky 但它起作用了???