You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenAPI自定义生成器如何禁止生成AllOf类及继承AllOf模型

根源解决方案(推荐)

你遇到的AllOf后缀类是OpenAPITools处理allOf中匿名对象时的默认生成逻辑,直接关闭匿名对象独立生成类的开关即可,不需要额外做过滤。
在你自定义的TypeScriptAngularClientCodegen子类的构造方法中添加如下配置:

public CustomAngularClientCodegen() {
    super();
    // 禁止将allOf中的匿名组合对象生成独立的*AllOf类
    this.setGenerateAliasAsModel(false);
}

配置后生成器会直接把allOf中匿名对象的字段合并到当前主模型,不会再生成ChangePasswordAllOf这类中间类,allOf列表里也不会再出现AllOf后缀的项,配合你已经做好的导入过滤逻辑,就能直接输出你期望的代码效果。


备选方案:现有逻辑下过滤继承项

如果你不方便修改生成逻辑,只需要过滤继承列表中的AllOf后缀项,可以重写postProcessModel方法处理allOf列表:

@Override
public Map<String, Object> postProcessModel(Map<String, Object> model) {
    model = super.postProcessModel(model);
    if (model.containsKey("allOf")) {
        List<String> allOfList = (List<String>) model.get("allOf");
        List<String> filtered = allOfList.stream()
                .filter(className -> !className.endsWith("AllOf"))
                .collect(Collectors.toList());
        if (filtered.isEmpty()) {
            model.remove("allOf");
        } else {
            model.put("allOf", filtered);
        }
    }
    return model;
}

该方法会在模板渲染前就把继承列表里的AllOf类删掉,不需要修改原有模板就能得到正确的继承声明。

内容的提问来源于stack exchange,提问作者dapperdandev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:24:03