如何导出Swagger定义文件(它应该是JSON或YAML文件)?我被要求这样做,而且我对Swagger只有粗略的了解。
我们的端点看起来像http://example.com//swagger/ui/index#!
,看起来像这样(截图不是我们真正的端点,但我不能发布):
版本为api version: v1
。
没有"出口"我能看到的按钮。那么我该如何导出呢?
答案 0 :(得分:30)
API定义的URL显示在Swagger UI的顶部栏中 - 在您的示例中它是
function downloadComplete(a) {
return a.wellname.answer
}
所以完整的网址似乎是
/v2/api-docs?group=full-petstore-api
在较新版本的Swagger UI中,API定义的链接通常显示在API标题下方,因此您可以右键单击链接并另存为。
如果您的Swagger UI没有指向API定义的可见链接,请查看页面源并查找http://localhost:8080/v2/api-docs?group=full-petstore-api
参数,例如:
url
如果您没有看到const ui = SwaggerUIBundle({
url: "https://petstore.swagger.io/v2/swagger.json", // <-------
dom_id: '#swagger-ui',
或url
是代码表达式,请打开浏览器开发工具,切换到网络标签并禁用缓存。然后刷新页面并在HTTP请求中搜索API定义文件(url
,swagger.json
,swagger.yaml
或类似文件)。您可以按 XHR 进行过滤,以缩小列表范围。
答案 1 :(得分:3)
JSON也可以内嵌在文档中,特别是针对Swagger 2.0版。如果您在浏览完@Helen的答案后仍未找到任何内容,请尝试一下:
"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>
答案 2 :(得分:2)
我使用的是Django Rest Framework(所以pip
软件包django-rest-swagger==2.2.0
),上面的答案还不够。有两种选择:
1)使用开发人员工具查看页面源。当我到达http://localhost:8000/docs/
端点时,我看到:
docs/
端点是在Django中配置的,因此它可能与您有所不同。在深入研究细节时,我可以转到“响应”选项卡(在Chrome中)并向下滚动以查找实际的JSON。这是window.drsSpec
2)另一种(也许更简单)的方法是按照https://github.com/marcgibbons/django-rest-swagger/issues/590
的建议向我的端点添加?format=openapi
这将直接吐出您需要的JSON。我通过将swagger
字段更改为openapi
将其导入Postman,这似乎有点hacky,但它可以正常工作??♂️
答案 3 :(得分:1)
尽管它已经被回答并且是正确的,但我想我应该发布它的更详细的版本。希望对您有所帮助,
链接:https://editor.swagger.io/#
打开招摇的用户界面,检查(Shift + Ctrl + i),刷新页面,您将获得如下所示的标签
选择 XHR 或网络标签下的所有标签,检查文件 api-doc?group = * ,然后单击子标签响应。 *现在复制ap-doc?group。**文件的内容,并使用相同的编辑器链接转换为yaml文件
答案 4 :(得分:0)
为
Swashbuckel.aspnet.core(5.5.0)
尝试
services.AddControllers()
.AddJsonOptions(options =>
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));
我在Web API核心项目中尝试过
您必须使用
System.Text.Json.Serialization;