OpenAPI自定义生成器 - 如何防止OpenApi中的"AllOf"类生成?

3
我正在构建一个自定义生成器,用于为Angular应用程序生成TypeScript / Angular模型。 作为起点,我从https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptAngularClientCodegen.java复制了代码。
我正在尝试找出如何防止生成器生成"AllOf"并从"AllOf"模型扩展模型。
生成器已经生成了一个包含其所需所有内容的模型,无需从*AllOf进行扩展。
我已经能够修改.java文件,以防止导入以"AllOf"结尾的类,但我找不到任何文档或示例来限制从以"AllOf"结尾的类进行扩展。
我有什么遗漏吗? 看起来应该有一种方法告诉生成器不要导入或创建"AllOf"类。
// what I get:
import { ValidatePassword } from './validate-password.model';

export interface ChangePassword extends ChangePasswordAllOf, ValidatePassword { 
    ...
}

// what I want
import { ValidatePasswordModel } from './validate-password.model';

export interface ChangePassword extends ValidatePassword { 
    ...
}

这是我的modelGeneric.mustache模板:
export interface {{classname}}{{#allOf}}{{#-first}} extends {{/-first}}{{{.}}}{{^-last}}, {{/-last}}{{/allOf}} { {{>modelGenericAdditionalProperties}}
{{#vars}}
    {{#description}}
    /**
     * {{{.}}}
     */
    {{/description}}
    {{#isReadOnly}}readonly {{/isReadOnly}}{{{name}}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}};
{{/vars}}
}{{>modelGenericEnums}}

以下是相关模式示例:
...
"ChangePassword": {
  "allOf": [
    {
      "$ref": "#/components/schemas/ValidatePassword"
    },
    {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "OldPassword"
      ],
      "properties": {
        "OldPassword": {
          "title": "Current password",
          "type": "string",
          "minLength": 1
        }
      }
    }
  ]
},
...

1
看起来这是一个已知的 bug。这个 PR 是一个 workaround,等待与关于该 bug 的两个问题的引用一起合并 https://github.com/OpenAPITools/openapi-generator/pull/9834 - dapperdan1985
1个回答

4
根据此链接:https://github.com/OpenAPITools/openapi-generator/issues/3100 请尝试:
"ChangePassword": {
    "type": "object",
    "additionalProperties": false,
    "required": [
        "OldPassword"
    ],
    "properties": {
        "OldPassword": {
            "title": "Current password",
            "type": "string",
            "minLength": 1
        }
    },
    "allOf": [{
        "$ref": "#/components/schemas/ValidatePassword"
    }]
}

很不幸,我无法控制模式。我必须使用给定的内容,并通过修改mustache模板和/或generator.java文件来生成模型。 - dapperdan1985

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接