【问题标题】:How to use configuration file (openapitools.json) with @openapitools/openapi-generator-cli?如何在@openapitools/openapi-generator-cli 中使用配置文件(openapitools.json)?
【发布时间】:2020-12-08 10:14:34
【问题描述】:

我使用@openapitools/openapi-generator-cli(v2.1.7) 在客户端生成API库。

它工作得很好,除了我无法按照我的意愿格式化生成的代码。

我刚刚注意到有一个新选项允许配置示例中提到的空格 ("spaces": 2):

{
  "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json",
  "spaces": 2,
  "generator-cli": {
    "version": "4.3.1",
    "storageDir": "~/my/custom/storage/dir", // optional
    "generators": { // optional
      "v2.0": { // any name you like (just printed to the console log) 
        "generatorName": "typescript-angular",
        "output": "#{cwd}/output/v2.0/#{ext}/#{name}",
        "glob": "examples/v2.0/{json,yaml}/*.{json,yaml}",
        "additionalProperties": {
          "ngVersion": "6.1.7",
          "npmName": "restClient",
          "supportsES6": "true",
          "npmVersion": "6.9.0",
          "withInterfaces": true
        }
      },
      "v3.0": { // any name you like (just printed to the console log) 
        "generatorName": "typescript-fetch",
        "output": "#{cwd}/output/v3.0/#{ext}/#{name}",
        "glob": "examples/v3.0/petstore.{json,yaml}"
      }
    }
  }
}

这听起来很棒!

问题是我无法使用official page中指定的配置文件:

如果在没有进一步参数的情况下调用 openapi-generator-cli generate,则配置会自动用于生成您的代码。

当我这样做时:

openapi-generator-cli generate

我一直遇到错误:

[错误] 缺少必需选项“-i”

如果我加上-i参数,例如:

openapi-generator-cli generate -i http://localhost:8081/v2/api-docs

然后“openapitools.json”文件被默认配置忽略并覆盖:

{
  "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json",
  "spaces": 2,
  "generator-cli": {
    "version": "4.3.1"
  }
}

我也尝试按照我以前的方式进行操作,并添加参数“-spaces=2”:

openapi-generator-cli generate -i http://localhost:8081/v2/api-docs -g typescript-angular -o src/app/tools/openapi -spaces=2

但还是不行,而且我现在有一个无用的文件 (openapitools.json) 烦人我的强迫症!

关于信息,我的 npm 版本 (npm -v) 是:

6.14.8

我正在使用当前最新的 Angular 版本:

11.0.0

【问题讨论】:

  • 我认为 -i 选项在您的 v2.0 | v3.0 内,位于密钥 "input-spec":"http://localhost:port/whatever"

标签: angular npm openapi-generator


【解决方案1】:

我遇到过你描述的类似问题;特别是“被默认配置覆盖”。

我确实认为无效的 opanapitools.json 会导致它被完全重置。 似乎是 cmets 导致了这些验证错误。

也许删除它们然后再试一次。

希望这会有所帮助,我使用 package.json-> 像这样的脚本运行它。

虽然 "spaces" 属性似乎只被使用,但当 cli 编写它自己的配置文件时。

【讨论】:

  • 感谢您的建议。我一有时间就试一试。我最终回到了早期版本。
  • 我也有同样的行为。它是由无效的 Json 文件引起的。修复文件的形式解决了问题。
【解决方案2】:

你可以试试这个,它会工作的

你的openapitools.json 内容应该是这样的:

{
  "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json",
  "spaces": 2,
  "generator-cli": {
    "version": "5.3.0",
     "generators":{
         "v2.0": {
        "generatorName": "javascript",
        "output": "./output",
        "inputSpec": "http://localhost:44301/swagger/v1/swagger.json",
        "additionalProperties": {
          "npmName": "restClient",
          "supportsES6": "true",
          "withInterfaces": true
        }
      }
     }
  }
}

根据https://www.npmjs.com/package/@openapitools/openapi-generator-cli 此处的文档,我知道在您的生成器密钥下应该有一个"glob": "examples/v2.0/{json,yaml}/*.{json,yaml}",,但出于一个奇怪的原因,"glob" 将与文件一起使用,但不适用于 URL! 如果您想直接从 API 服务器中的 Swagger URL 获取 Open API 规范文件,您应该改用 "inputSpec",它对我有用。在我的情况下是:

  "inputSpec": "http://localhost:44301/swagger/v1/swagger.json",

如果您像上面的代码一样设置openapitools.json,您可以使用以下命令生成例如您的javascript客户端:

 openapi-generator-cli generate  --generator-key v1.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 2022-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    相关资源
    最近更新 更多