如何将多个 OpenAPI 3 规范文件组合在一起?
How do I combine multiple OpenAPI 3 specification files together?
我想合并使用 OpenAPI 3 规范编写的 API 规范,该规范当前分为多个使用 $ref
相互引用的文件。我该怎么做?
一种方法是使用开源项目 speccy。
打开终端并通过 运行ning 安装 speccy
(需要 Node.js):
npm install speccy -g
然后运行:
speccy resolve path/to/spec.yaml -o spec-output.yaml
大多数 OpenAPI 工具可以使用多文件 OpenAPI 定义并动态解析 $ref
s。
如果您特别需要获取单个解析文件,Swagger Codegen 可以做到这一点。以下是 Swagger Codegen 命令行版本的使用示例。输入文件 (-i
) 可以是本地文件或 URL.
注意:添加换行符是为了便于阅读。
OpenAPI 3.0 示例
使用Codegen 3.x解析OpenAPI 3.0文件:
java -jar swagger-codegen-cli-3.0.18.jar generate
-l openapi-yaml
-i ./path/to/openapi.yaml
-o ./OUT_DIR
-DoutputFile=output.yaml
-l openapi-yaml
输出 YAML,-l openapi
输出 JSON.
-DoutputFile
可选,默认文件名是openapi.yaml
/ openapi.json
.
OpenAPI 2.0 示例
使用 Codegen 2.x 解析 OpenAPI 2.0 文件 (swagger: '2.0'
):
java -jar swagger-codegen-cli-2.4.12.jar generate
-l swagger-yaml
-i ./path/to/openapi.yaml
-o ./OUT_DIR
-DoutputFile=output.yaml
-l swagger-yaml
输出 YAML,-l swagger
输出 JSON.
-DoutputFile
是可选的,默认文件名是swagger.yaml
/ swagger.json
.
我最近写了一个快速工具来做这个。我称之为 openapi-merge。有一个库和一个关联的 CLI 工具:
为了使用 CLI 工具,您只需编写一个配置文件,然后 运行 npx openapi-merge-cli
。配置文件相当简单,看起来像这样:
{
"inputs": [
{
"inputFile": "./gateway.swagger.json"
},
{
"inputFile": "./jira.swagger.json",
"pathModification": {
"stripStart": "/rest",
"prepend": "/jira"
}
},
{
"inputFile": "./confluence.swagger.json",
"disputePrefix": "Confluence",
"pathModification": {
"prepend": "/confluence"
}
}
],
"output": "./output.swagger.json"
}
有关详细信息,请参阅 README on the NPM package。
我想合并使用 OpenAPI 3 规范编写的 API 规范,该规范当前分为多个使用 $ref
相互引用的文件。我该怎么做?
一种方法是使用开源项目 speccy。
打开终端并通过 运行ning 安装 speccy
(需要 Node.js):
npm install speccy -g
然后运行:
speccy resolve path/to/spec.yaml -o spec-output.yaml
大多数 OpenAPI 工具可以使用多文件 OpenAPI 定义并动态解析 $ref
s。
如果您特别需要获取单个解析文件,Swagger Codegen 可以做到这一点。以下是 Swagger Codegen 命令行版本的使用示例。输入文件 (-i
) 可以是本地文件或 URL.
注意:添加换行符是为了便于阅读。
OpenAPI 3.0 示例
使用Codegen 3.x解析OpenAPI 3.0文件:
java -jar swagger-codegen-cli-3.0.18.jar generate
-l openapi-yaml
-i ./path/to/openapi.yaml
-o ./OUT_DIR
-DoutputFile=output.yaml
-l openapi-yaml
输出 YAML,-l openapi
输出 JSON.
-DoutputFile
可选,默认文件名是openapi.yaml
/ openapi.json
.
OpenAPI 2.0 示例
使用 Codegen 2.x 解析 OpenAPI 2.0 文件 (swagger: '2.0'
):
java -jar swagger-codegen-cli-2.4.12.jar generate
-l swagger-yaml
-i ./path/to/openapi.yaml
-o ./OUT_DIR
-DoutputFile=output.yaml
-l swagger-yaml
输出 YAML,-l swagger
输出 JSON.
-DoutputFile
是可选的,默认文件名是swagger.yaml
/ swagger.json
.
我最近写了一个快速工具来做这个。我称之为 openapi-merge。有一个库和一个关联的 CLI 工具:
为了使用 CLI 工具,您只需编写一个配置文件,然后 运行 npx openapi-merge-cli
。配置文件相当简单,看起来像这样:
{
"inputs": [
{
"inputFile": "./gateway.swagger.json"
},
{
"inputFile": "./jira.swagger.json",
"pathModification": {
"stripStart": "/rest",
"prepend": "/jira"
}
},
{
"inputFile": "./confluence.swagger.json",
"disputePrefix": "Confluence",
"pathModification": {
"prepend": "/confluence"
}
}
],
"output": "./output.swagger.json"
}
有关详细信息,请参阅 README on the NPM package。