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

How to export a Swagger JSON/YAML file from Swagger UI?

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

我们确实有一个类似于http://example.com//swagger/ui/index#!的端点,它看起来像这样(尽管屏幕截图不是我们的真实端点,但是我不能发布该端点):

enter image description here

版本是api version: v1

我没有看到"导出"按钮。 那么我该如何导出呢?

  • 这回答了你的问题了吗? 为什么在使用springfox和Swagger2时v2 / api-docs是默认URL?
  • 不,我认为下面接受的答案可以回答我的问题。 标题也提出了完全不同的要求。 但是还是谢谢你!


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

1
/v2/api-docs?group=full-petstore-api

因此,完整的网址似乎是

1
http://localhost:8080/v2/api-docs?group=full-petstore-api

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

Link to API definition in Swagger UI 3.x

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

1
2
3
const ui = SwaggerUIBundle({
  url:"https://petstore.swagger.io/v2/swagger.json",     // <-------
  dom_id: '#swagger-ui',

如果看不到urlurl是代码表达式,请打开浏览器开发工具,切换到"网络"选项卡并禁用缓存。然后刷新页面,并在HTTP请求中搜索API定义文件(swagger.jsonswagger.yamlapi-docs或类似文件)。您可以按XHR筛选以缩小列表范围。

Finding the Swagger file on the Network tab of browser dev tools

有时,OpenAPI定义可能嵌入在.js文件中–在这种情况下,请使用此文件并去除多余的部分。

OpenAPI definition embedded in a JavaScript file

  • 在新的swagger版本(" swagger":" 2.0")中,您在网络跟踪中是" v1"," v2",而不是" swagger.json",...右键单击并在新选项卡中将其打开,您可以请参阅带有url的json:https:// yourapi.yourdomain.com/api/swagger/docs/v2
  • @maliness没有"新的Swagger版本",因为Swagger不是单个工具,而是多个工具(编辑器,UI,代码生成器等)的统称。也就是说,URL取决于应用程序的设计方式,使用的框架以及其他因素。 URL不一定是apiswaggerdocsv2,它几乎可以是任何东西。使用开发工具中的XHR过滤器可找到指向您的API定义文件的链接。
  • 谢谢@海伦。我们如何将这个json发布到公共位置,比如说一个驱动器链接或Blob存储?
  • 您知道要在swagger生成的链接中编辑JSON吗?
  • @Sattar这取决于API定义是从源代码生成还是手动编写/维护。在前一种情况下,您将必须编辑API源代码并重新部署API。在后一种情况下,请在您选择的编辑器(例如editor.swagger.io)中编辑API定义文件,然后将其重新上传到其托管位置。
  • 您好,我想知道是否可以使用Java将所有这些文件放在列表中?


尽管它已经被回答并且是正确的,但我认为我应该发布它的详细版本。希望这对您有所帮助,

  • 如果确实有将swagger json文件提供给swagger UI,则要生成.yaml文件,只需单击下面的链接,将json复制粘贴到编辑器中,然后下载yaml文件。这是一个简单的方法
  • 链接:https://editor.swagger.io/#

  • 现在,在第二种方法中,如果没有任何庞大的json文件,则以下步骤应该会有所帮助,
  • 打开招摇的用户界面,检查(Shift + Ctrl + i),刷新页面,您将获得如下标签

    enter image description here

    选择" XHR"或"网络"选项卡下的"全部"选项卡,检查文件api-doc?group = *并单击子选项卡响应。 *现在复制ap-doc?group。**文件的内容,并使用相同的编辑器链接转换为yaml文件

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


    JSON也可以内联到文档中,特别是针对Swagger 2.0版。如果在通过@Helen的答案后仍未找到任何内容,请尝试以下方法:

  • 查看页面源代码
  • 搜索"swagger""spec"
  • 如果您看到一个

    System.Text.Json.Serialization;