如何导出Swagger定义文件?它应该是JSON或YAML文件,例如swagger.json或swagger.yaml。假设我有一个类似http://example.com//swagger/ui/index#!的端点:
http://example.com//swagger/ui/index#!
版本为api version: v1。没有“导出”按钮,我可以看到。那么我如何导出它?
api version: v1
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参数,例如:
url
const ui = SwaggerUIBundle({ url: "https://petstore.swagger.io/v2/swagger.json", // <------- dom_id: '#swagger-ui',
如果您没有看到url,或者url是一个代码表达式,请打开浏览器开发工具,切换到网络选项卡并禁用缓存。然后刷新页面并在HTTP请求中搜索API定义文件(swagger.json、swagger.yaml、api-docs或类似文件)。您可以按XHR进行筛选以缩小列表范围。
swagger.json
swagger.yaml
api-docs
查找实际url的另一种方法是使用浏览器控制台并根据您的UI版本计算以下值之一:
ui.getConfigs().url
swaggerUi.api.url
有时OpenAPI定义可能嵌入在一个.js文件中-在这种情况下,使用这个文件并去掉多余的部分。
z9smfwbn2#
虽然它已经被回答,这是正确的一个,我想我应该张贴它的更详细的版本..希望这有帮助,1.如果你有swagger json文件,你可以把它输入到swagger UI中,那么要生成.yaml文件,只需点击下面的链接,在编辑器中复制粘贴你的json,然后下载yaml文件。链接:https://editor.swagger.io/#1.第二种方法是没有任何swaggerjson文件,那么下面的步骤应该会有所帮助,打开swagger用户界面,检查(Shift+Ctrl+i),刷新页面,你会得到如下标签
选择XHR或Network选项卡下的All选项卡,检查文件**api-doc?group=并单击子选项卡response*。* 现在复制ap-doc?group.**文件的内容并使用相同的编辑器链接转换为yaml文件链接:https://editor.swagger.io/#
tgabmvqs3#
JSON也可以内嵌在文档中,特别是对于Swagger 2.0版。如果您在浏览@Helen的答案后没有找到任何内容给予请尝试以下操作:1.查看页面源1.搜索"swagger"或"spec"如果您看到一个<script type="application/json">标记,其中包含类似于以下内容的内容,这实际上就是您的swagger.json内容。复制<script>标记中的所有内容,并保存到一个名为swagger.json的文件中,您应该可以开始了。
"swagger"
"spec"
<script type="application/json">
<script>
<script id="swagger-data" type="application/json"> {"spec":{"definitions":{},"info":{},"paths":{},"schemes":[],"swagger":"2.0"}} </script>
8ehkhllq4#
我使用的是Django Rest Framework(所以pip包django-rest-swagger==2.2.0),上面的答案并不足够。1)使用开发人员工具查看页面源代码。当我点击http://localhost:8000/docs/终结点时,我看到:
pip
django-rest-swagger==2.2.0
http://localhost:8000/docs/
docs/端点是在Django中配置的,所以对您来说可能会有所不同。当深入了解它的细节时,我可以转到Response标签(在Chrome中)并向下滚动以找到实际的JSON。它是window.drsSpec中的值
docs/
window.drsSpec
2)另一种(可能更简单)方法是将?format=openapi添加到我的端点,如https://github.com/marcgibbons/django-rest-swagger/issues/590中所建议的这会直接吐出你需要的JSON,我把它导入到Postman中,把swagger字段改成openapi,看起来有点hacky,但是很管用🤷🏻♂️
?format=openapi
swagger
openapi
72qzrwbm5#
用于旋转扣、套筒、芯(5.5.0)尝试
services.AddControllers() .AddJsonOptions(options => options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));
我在一个Web API核心项目中尝试过这种方法你必须使用系统.文本.Json.序列化;
ux6nzvsh6#
1.请访问1.上述URL将返回JSON,将JSON保存为swagger.json请将端口号替换为您的端口号。
tktrz96b7#
这可以在编译时使用JUnit测试用例来实现,请遵循https://github.com/springfox/springfox/issues/1959了解更多详细信息。
7条答案
按热度按时间slhcrj9b1#
API定义的URL显示在Swagger UI的顶栏中-在您的示例中是
因此完整的URL显示为
在较新版本的Swagger UI中,指向API定义的链接通常显示在API标题下方,因此您可以右键单击该链接并保存为。
如果您的Swagger UI没有指向API定义的可见链接,请查看页面源代码并查找
url
参数,例如:如果您没有看到
url
,或者url
是一个代码表达式,请打开浏览器开发工具,切换到网络选项卡并禁用缓存。然后刷新页面并在HTTP请求中搜索API定义文件(swagger.json
、swagger.yaml
、api-docs
或类似文件)。您可以按XHR进行筛选以缩小列表范围。查找实际
url
的另一种方法是使用浏览器控制台并根据您的UI版本计算以下值之一:有时OpenAPI定义可能嵌入在一个.js文件中-在这种情况下,使用这个文件并去掉多余的部分。
z9smfwbn2#
虽然它已经被回答,这是正确的一个,我想我应该张贴它的更详细的版本..希望这有帮助,
1.如果你有swagger json文件,你可以把它输入到swagger UI中,那么要生成.yaml文件,只需点击下面的链接,在编辑器中复制粘贴你的json,然后下载yaml文件。
链接:https://editor.swagger.io/#
1.第二种方法是没有任何swaggerjson文件,那么下面的步骤应该会有所帮助,
打开swagger用户界面,检查(Shift+Ctrl+i),刷新页面,你会得到如下标签
选择XHR或Network选项卡下的All选项卡,检查文件**api-doc?group=并单击子选项卡response*。* 现在复制ap-doc?group.**文件的内容并使用相同的编辑器链接转换为yaml文件
链接:https://editor.swagger.io/#
tgabmvqs3#
JSON也可以内嵌在文档中,特别是对于Swagger 2.0版。如果您在浏览@Helen的答案后没有找到任何内容给予请尝试以下操作:
1.查看页面源
1.搜索
"swagger"
或"spec"
如果您看到一个
<script type="application/json">
标记,其中包含类似于以下内容的内容,这实际上就是您的swagger.json
内容。复制<script>
标记中的所有内容,并保存到一个名为swagger.json的文件中,您应该可以开始了。8ehkhllq4#
我使用的是Django Rest Framework(所以
pip
包django-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,但是很管用🤷🏻♂️72qzrwbm5#
用于
旋转扣、套筒、芯(5.5.0)
尝试
我在一个Web API核心项目中尝试过这种方法
你必须使用
系统.文本.Json.序列化;
ux6nzvsh6#
1.请访问
1.上述URL将返回JSON,将JSON保存为swagger.json
请将端口号替换为您的端口号。
tktrz96b7#
这可以在编译时使用JUnit测试用例来实现,请遵循https://github.com/springfox/springfox/issues/1959了解更多详细信息。