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

如何从Swagger UI导出Swagger JSON/YAML文件?,swagger,swagger-ui,Swagger,Swagger Ui,如何导出Swagger定义文件(应该是JSON或YAML文件) 假设我有一个端点看起来像http://example.com//swagger/ui/index#!: 版本为api版本:v1 我看不到“导出”按钮。那么如何导出它呢?API定义的URL显示在Swagger UI的顶部栏中–在您的示例中,它是 /v2/api-docs?group=full-petstore-api 因此,完整的URL似乎是 http://localhost:8080/v2/api-docs?group=full

如何导出Swagger定义文件(应该是JSON或YAML文件)

假设我有一个端点看起来像
http://example.com//swagger/ui/index#!

版本为
api版本:v1


我看不到“导出”按钮。那么如何导出它呢?

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

/v2/api-docs?group=full-petstore-api
因此,完整的URL似乎是

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

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


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

const ui=SwaggerUIBundle({

url:“https://petstore.swagger.io/v2/swagger.json“,//虽然已经回答了,而且是正确的,但我想我应该发布更详细的版本。希望这能有所帮助

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

  • 现在,第二种方法是没有任何招摇过市的json文件,下面的步骤应该会有所帮助
  • 打开Swigger用户界面,检查(Shift+Ctrl+i),刷新页面,您将获得如下选项卡

    选择XHRNetwork选项卡下的所有选项卡,检查文件api doc?group=*,然后单击子选项卡response*现在复制ap doc?group.*文件的内容,并使用相同的编辑器链接转换为yaml文件


    链接:

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

  • 查看页面源
  • 搜索
    “招摇过市”
    “规范”
  • 如果您看到一个
    标记中包含类似于以下内容的内容,那么这实际上就是您的
    swagger.json
    内容。复制
    标记中的所有内容并保存到名为swagger.json的文件中,您就可以开始了

    <script id="swagger-data" type="application/json">
    {"spec":{"definitions":{},"info":{},"paths":{},"schemes":[],"swagger":"2.0"}}
    </script>
    
    
    {“spec”:{“definitions”:{},“info”:{},“path”:{},“schemes”:[],“swagger”:“2.0”}
    
    我使用的是Django Rest框架(因此,
    pip
    package
    Django Rest swagger==2.2.0
    ),上面的答案并不充分。有两个选项:

    1) 使用开发工具查看页面源代码。当我点击我的
    http://localhost:8000/docs/
    endpoint,我看到了:

    docs/
    端点是在Django中配置的,因此对您来说可能有所不同。深入了解细节时,我可以转到响应选项卡(在Chrome中)并向下滚动以查找实际的JSON。这是
    window.drsSpec中的值

    2) 另一种方法(可能更简单)是向我的端点添加
    ?format=openapi
    ,如中所建议

    这将直接输出您需要的JSON。我通过将
    swagger
    字段更改为
    openapi
    将其导入到Postman中,这似乎有点黑客味,但它对您有效

    Swashbuckel.aspnet.core(5.5.0)

    试一试

    我为一个WebAPI核心项目尝试了这个

    你必须使用

    System.Text.Json.Serialization


    在新的swagger版本(“swagger”:“2.0”)中,您在网络跟踪中有“v1”、“v2”而不是“swagger.json”…右键单击并在新选项卡中打开它,您可以看到带有url的json:https://yourapi.yourdomain.com/api/swagger/docs/v2@maliness没有“新的招摇过市版本”因为Swagger不是单个工具,而是多个工具(编辑器、UI、codegen和其他工具)的集合名称。也就是说,URL取决于应用程序的设计方式、使用的框架以及其他内容。URL不一定是
    /api/swagger/docs/v2
    ,它几乎可以是任何内容。使用开发工具中的XHR过滤器查找指向api定义文件的链接。谢谢@Helen。我们如何将此json发布到公共位置,让我们来看看ay一个驱动器链接还是一个blob存储?您知道在swagger生成的链接中编辑JSON吗?@Sattar这取决于API定义是从源代码生成的还是手动编写/维护的。在前一种情况下,您必须编辑API的源代码并重新部署API。在后一种情况下,编辑API定义在您选择的编辑器中归档(例如),然后将文件重新上载到托管位置。这是否回答了您的问题?不,我认为下面已接受的答案回答了我的问题。标题也提出了完全不同的问题。但无论如何,谢谢您!
    swaggerUi.api.url
    
    <script id="swagger-data" type="application/json">
    {"spec":{"definitions":{},"info":{},"paths":{},"schemes":[],"swagger":"2.0"}}
    </script>
    
    services.AddControllers()
                        .AddJsonOptions(options =>
                            options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));