json - 如何在单个 swagger doc 文件中合并 swagger 多个文件?
问题描述
我为多个 API 提供了不同的 swagger 文件,例如用于 OpenStack API 的 swagger1.json、用于用户 API 的 swagger2.json 等,我试图使用远程 $ref 方法将这些所有 swagger 文件合并到一个文件中。
这是 OpenStack api 的 swagger1.json 文件
{
"stacks": {
"get": {
"tags": [
"openstack"
],
"summary": "Returns stacks from OpenStack",
"description": "Returns all stacks from the OpenStack based on tenantId.",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"parameters": [
{
"in": "query",
"type": "string",
"name": "tenantId",
"description": "search stacks for tenantId from OpenStack",
"required": false
}
],
"responses": {
"200": {
"description": "OK"
},
"400": {
"description": "Unknown Error"
},
"401": {
"description": "Unauthorized"
}
}
}
}
}
这是 swagger-merge.json,我想在其中使用远程引用添加多个 swagger doc 文件。
{
"swagger": "2.0",
"info": {
"description": "something here",
"version": "v0.7.0",
"title": "The API Gateway",
"contact": {
"email": "dp@gmail.com"
}
},
"host": "localhost",
"port":"9191",
"basePath": "/api/openstack",
"tags": [
{
"name": "OpenStackApi",
"description": "Get stacks and running instance form OpenStack"
}
],
"schemes": [
"https"
],
"paths": {
"$ref": "./swagger1.json#/stacks"
}
}
这对我不起作用。我看不到我在 swagger1.json 文件中编写的 API 方法。我已经上传了 swaggerUI 输出。关于我做错了什么以及如何解决这个问题的任何想法?
解决方案
你不能$ref
完整的内容paths
,你只能参考个别的路径项目:
"paths": {
"/stacks": { <--- endpoint path
"$ref": "./swagger1.json#/stacks"
}
}
推荐阅读
- sql-server - 如何在 SQL Server 中通过外键查询行并对其进行分组?
- java - Android Studio 中来自 Google 地图的意外响应代码 503
- javascript - 我正在尝试根据光标和所述对象之间的距离调整对象的大小。我得到的 Y 值总是 naN
- shell - Shell 脚本中 Dot(`.`)/Source 命令的参数
- hibernate - 有时 JPA Repository 不返回最新数据?
- couchbase - 如何将一个文档中的数组值映射到另一个文档并显示在结果中
- python - 什么是数据库大小的有效方法?
- mit-scratch - 使一个精灵跟随另一个偏离中心,包括旋转
- android - 如何验证信用卡/支票卡号?
- cadence-workflow - 无法运行不受支持的工作流:错误 1193:未知系统变量“transaction_isolation”