我正在构建一个自定义生成器来为角度应用程序生成 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
}
}
}
]
},
...
根据此: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"
}]
}
我认为 OpenAPI Generator v7.4.0 中已经解决了这个问题。有时间的话请再尝试一下。
另一个有用的选项是在
OpenAPI Normalizer中启用规则
REF_AS_PARENT_IN_ALLOF