提问人:sashoalm 提问时间:1/30/2018 最后编辑:Helensashoalm 更新时间:11/21/2023 访问量:218676
如何导出 swagger.json(或 yaml)
How to export swagger.json (or yaml)
问:
如何导出 Swagger 定义文件?它应该是 JSON 或 YAML 文件,例如 swagger.json 或 swagger.yaml。
假设我有一个端点,如下所示:http://example.com//swagger/ui/index#!
版本是 。api version: 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", // <-------
dom_id: '#swagger-ui',
如果未看到 or if 是代码表达式,请打开浏览器开发工具,切换到“网络”选项卡并禁用缓存。然后刷新页面,在 HTTP 请求中搜索 API 定义文件(、 或类似文件)。您可以按 XHR 进行筛选以缩小列表范围。url
url
swagger.json
swagger.yaml
api-docs
查找实际值的另一种方法是使用浏览器控制台并计算以下值之一,具体取决于您的 UI 版本:url
Swagger UI 3.x:
ui.getConfigs().url
Swagger UI 2.x:
swaggerUi.api.url
有时,OpenAPI 定义可能嵌入在 .js 文件中 - 在这种情况下,获取此文件并去除多余的部分。
评论
/api/swagger/docs/v2
虽然它已经得到了回答并且是正确的,但我想我会发布它的详细版本。希望这会有所帮助,
- 如果您确实有提供给 swagger UI 的 swagger json 文件,那么要生成 .yaml 文件,只需单击下面的链接,将您的 json 复制粘贴到编辑器中并下载 yaml 文件。这是一种直接的方法
友情链接 : https://editor.swagger.io/#
- 现在,第二种方式,您没有任何swagger json文件,那么以下步骤应该会有所帮助,
打开 swagger ui,检查 (Shift+Ctrl+i),刷新页面,你会得到如下选项卡
选择“网络”选项卡下的“XHR”或“全部”选项卡,检查文件 api-doc?group=*,然后单击子选项卡响应。*现在复制ap-doc?group.**文件的内容,并使用相同的编辑器链接转换为yaml文件
友情链接 : https://editor.swagger.io/#
JSON 也可以内联在文档中,特别是对于 Swagger 版本 2.0。如果您在浏览@Helen的答案后仍未找到任何内容,请尝试一下:
- 查看页面源代码
- 搜索 或
"swagger"
"spec"
如果您看到一个标签中包含类似于以下内容的内容,则这实际上是您的内容。复制标签内的所有内容并保存到名为 swagger.json 的文件中,您应该可以开始了。<script type="application/json">
swagger.json
<script>
<script id="swagger-data" type="application/json">
{"spec":{"definitions":{},"info":{},"paths":{},"schemes":[],"swagger":"2.0"}}
</script>
我正在使用 Django Rest 框架(所以包),上面的答案还不够。有两种选择:pip
django-rest-swagger==2.2.0
1)使用开发人员工具查看页面源代码。当我到达我的端点时,我看到:http://localhost:8000/docs/
端点是在 Django 中配置的,因此它可能因你而异。在深入研究细节时,我可以转到“响应”选项卡(在 Chrome 中)并向下滚动以查找实际的 JSON。这是docs/
window.drsSpec
2) 另一种(也许更容易)方法是添加到我的端点,如 https://github.com/marcgibbons/django-rest-swagger/issues/590?format=openapi
这将直接吐出您需要的 JSON。我通过更改字段将其导入 Postman,这似乎有点骇人听闻,但它有效 🤷🏻 ♂️swagger
openapi
评论
为
Swashbuckel.aspnet.core(5.5.0)
尝试
services.AddControllers()
.AddJsonOptions(options =>
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));
我为Web API核心项目尝试了这个
你必须使用
System.Text.Json.序列化;
- 访问 http://localhost:49846/swagger/docs/v1
- 上面的 URL 将返回 JSON。将 JSON 另存为 swagger.json
请将端口号替换为您的端口号。
这可以在编译时使用 JUnit 测试用例来实现,请按照 https://github.com/springfox/springfox/issues/1959 了解更多详细信息。
如果 url 是那么要获取 json,请让它/api
/api-json
我也面临这个问题。
遵循的步骤:
启用根级调试日志并分析日志消息。
o.s.w.a.OpenApiWebfluxResource:
{GET /v3/api-docs, produces [application/json]}: openapiJson(ServerHttpRequest,String,Locale)
{GET /v3/api-docs.yaml, produces [application/vnd.oai.openapi]}: openapiYaml(ServerHttpRequest,String,Locale)
通过查看上面的日志,通过点击 URL http://server:port/v3/api-docs.yaml 下载了 Api 规范 yaml 文件
评论