【问题标题】:How to filter generated Swagger JSON (yaml)如何过滤生成的 Swagger JSON (yaml)
【发布时间】:2016-09-30 09:25:10
【问题描述】:

我有超过 5k 行长的 swagger.json 文件,描述了数百个路径和对象。我想仅使用部分端点生成一个 TypeScript 客户端(使用 swagger-codegen)。我不希望生成的 TypeScript 应用程序包含与 swagger.json 的未使用部分连接的类或接口

如何仅过滤掉 Swagger 文档的一部分,描述指定的路径组(例如,所有以 /api/* 开头的路径)?特别是我希望过滤后的 JSON 不包含未使用的数据结构的 definitions

【问题讨论】:

    标签: swagger swagger-codegen


    【解决方案1】:

    我认为您可以使用任务自动化(grunt、gulp、shell 等)来做到这一点。 基本上它可能是一个 3 步的任务:

    1. 获取 swagger.json(或调用 swagger code-gen 来获取 json,类似 java -jar swagger-codegen-cli-x.x.x.jar generate -i <URL> -l swagger -o GeneratedCodeSwagger
    2. 删除要排除的定义/路径并创建修改后的 swagger.json
    3. 使用java -jar swagger-codegen-cli-x.x.x.jar generate -i GeneratedCodeSwagger\swagger.json -l typescript-angular调用代码生成传递修改后的json

    【讨论】:

    • 感谢您的回答!这是我解决这个问题的唯一想法。我只是想确定没有其他方法/工具可以用来做到这一点。所以我会尝试在node.js中写一个简单的命令行工具。
    【解决方案2】:

    最后,我们创建了swagger-json-filter——一个允许过滤 Swagger 文档的命令行工具。它可以很容易地与 bash 中的其他命令一起使用:

    cat input.json | swagger-json-filter --include-paths="^\/api\/.*" > output.json
    

    该工具正在执行从输出中过滤掉不需要的定义(也嵌套)所需的逻辑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      • 2020-10-09
      • 1970-01-01
      • 2020-12-19
      • 2018-03-18
      相关资源
      最近更新 更多