如何导出swagger.json(或yaml)

kgqe7b3p  于 2022-12-13  发布在  其他
关注(0)|答案(7)|浏览(1465)

如何导出Swagger定义文件?它应该是JSON或YAML文件,例如swagger.json或swagger.yaml。
假设我有一个类似http://example.com//swagger/ui/index#!的端点:

版本为api version: v1
没有“导出”按钮,我可以看到。那么我如何导出它?

slhcrj9b

slhcrj9b1#

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",     // <-------
  dom_id: '#swagger-ui',

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

查找实际url的另一种方法是使用浏览器控制台并根据您的UI版本计算以下值之一:

  • 昂首阔步UI 3.x:
ui.getConfigs().url
  • 昂首阔步UI 2.x:
swaggerUi.api.url

有时OpenAPI定义可能嵌入在一个.js文件中-在这种情况下,使用这个文件并去掉多余的部分。

z9smfwbn

z9smfwbn2#

虽然它已经被回答,这是正确的一个,我想我应该张贴它的更详细的版本..希望这有帮助,
1.如果你有swagger json文件,你可以把它输入到swagger UI中,那么要生成.yaml文件,只需点击下面的链接,在编辑器中复制粘贴你的json,然后下载yaml文件。
链接:https://editor.swagger.io/#
1.第二种方法是没有任何swaggerjson文件,那么下面的步骤应该会有所帮助,
打开swagger用户界面,检查(Shift+Ctrl+i),刷新页面,你会得到如下标签

选择XHRNetwork选项卡下的All选项卡,检查文件**api-doc?group=并单击子选项卡response*。* 现在复制ap-doc?group.**文件的内容并使用相同的编辑器链接转换为yaml文件
链接:https://editor.swagger.io/#

tgabmvqs

tgabmvqs3#

JSON也可以内嵌在文档中,特别是对于Swagger 2.0版。如果您在浏览@Helen的答案后没有找到任何内容给予请尝试以下操作:
1.查看页面源
1.搜索"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>
8ehkhllq

8ehkhllq4#

我使用的是Django Rest Framework(所以pipdjango-rest-swagger==2.2.0),上面的答案并不足够。
1)使用开发人员工具查看页面源代码。当我点击http://localhost:8000/docs/终结点时,我看到:

docs/端点是在Django中配置的,所以对您来说可能会有所不同。当深入了解它的细节时,我可以转到Response标签(在Chrome中)并向下滚动以找到实际的JSON。它是window.drsSpec中的值

2)另一种(可能更简单)方法是将?format=openapi添加到我的端点,如https://github.com/marcgibbons/django-rest-swagger/issues/590中所建议的
这会直接吐出你需要的JSON,我把它导入到Postman中,把swagger字段改成openapi,看起来有点hacky,但是很管用🤷🏻‍♂️

72qzrwbm

72qzrwbm5#

用于
旋转扣、套筒、芯(5.5.0)
尝试

services.AddControllers()
                    .AddJsonOptions(options =>
                        options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));

我在一个Web API核心项目中尝试过这种方法
你必须使用
系统.文本.Json.序列化;

ux6nzvsh

ux6nzvsh6#

1.请访问
1.上述URL将返回JSON,将JSON保存为swagger.json
请将端口号替换为您的端口号。

tktrz96b

tktrz96b7#

这可以在编译时使用JUnit测试用例来实现,请遵循https://github.com/springfox/springfox/issues/1959了解更多详细信息。

相关问题