如何从Swagger UI导出Swagger JSON/YAML文件?
如何导出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
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),刷新页面,您将获得如下选项卡
选择XHR或Network选项卡下的所有选项卡,检查文件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
packageDjango 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()));