如何过滤生成的 Swagger JSON (yaml)
How to filter generated Swagger JSON (yaml)
我有超过 5k 行长的 swagger.json 文件描述了数百个路径和对象。我想仅使用一部分端点生成一个 TypeScript 客户端(使用 swagger-codegen)。我不希望生成的 TypeScript 应用程序包含 类 或与 swagger.json
的未使用部分连接的接口
如何过滤掉部分Swagger文档,描述指定的一组路径(例如所有以/api/*
开头的路径)?特别是我希望过滤后的 JSON 不包含未使用的数据结构的 definitions
。
我认为你可以做到,使用任务自动化(grunt,gulp,shell,等等)。
基本上它可能是一个 3 步任务:
- 获取 swagger.json(或调用 swagger code-gen 获取 json,类似
java -jar swagger-codegen-cli-x.x.x.jar generate -i <URL> -l swagger -o GeneratedCodeSwagger
)
- 删除要排除的 definitions/paths 并创建修改后的 swagger.json
- 使用
java -jar swagger-codegen-cli-x.x.x.jar generate -i GeneratedCodeSwagger\swagger.json -l typescript-angular
调用代码生成器传递修改后的 json
最后,我们创建了 swagger-json-filter – 一个允许过滤 Swagger 文档的命令行工具。它可以很容易地与 bash:
中的其他命令一起使用
cat input.json | swagger-json-filter --include-paths="^\/api\/.*" > output.json
该工具正在执行从输出中过滤掉不需要的定义(也嵌套)所需的逻辑。
我有超过 5k 行长的 swagger.json 文件描述了数百个路径和对象。我想仅使用一部分端点生成一个 TypeScript 客户端(使用 swagger-codegen)。我不希望生成的 TypeScript 应用程序包含 类 或与 swagger.json
的未使用部分连接的接口如何过滤掉部分Swagger文档,描述指定的一组路径(例如所有以/api/*
开头的路径)?特别是我希望过滤后的 JSON 不包含未使用的数据结构的 definitions
。
我认为你可以做到,使用任务自动化(grunt,gulp,shell,等等)。 基本上它可能是一个 3 步任务:
- 获取 swagger.json(或调用 swagger code-gen 获取 json,类似
java -jar swagger-codegen-cli-x.x.x.jar generate -i <URL> -l swagger -o GeneratedCodeSwagger
) - 删除要排除的 definitions/paths 并创建修改后的 swagger.json
- 使用
java -jar swagger-codegen-cli-x.x.x.jar generate -i GeneratedCodeSwagger\swagger.json -l typescript-angular
调用代码生成器传递修改后的 json
最后,我们创建了 swagger-json-filter – 一个允许过滤 Swagger 文档的命令行工具。它可以很容易地与 bash:
中的其他命令一起使用cat input.json | swagger-json-filter --include-paths="^\/api\/.*" > output.json
该工具正在执行从输出中过滤掉不需要的定义(也嵌套)所需的逻辑。