在swagger-codegen中是否可以自定义新增Mustache模板变量?
swagger-codegen 自定义Mustache模板变量实现方案
完全支持自定义新增模板变量,官方文档列出的仅为内置默认变量,没有限制扩展,可按以下不同场景实现:
1. 全局级自定义变量(所有模板均可访问)
在你自定义的CustomCodeGen类的构造方法或processOpts()方法中,直接向内置的additionalPropertiesMap中插入自定义键值对即可:
public CustomCodeGen() { super(); // 插入自定义全局变量 additionalProperties.put("custom_param", "自定义全局变量值"); // 原有模板路径等配置保留 templateDir = "你的自定义模板存放路径"; }
插入后直接在任意mustache模板中使用{{custom_param}}即可读取值。
2. 接口操作级自定义变量(仅在{{#operation}}块内访问)
如果变量和单个接口操作绑定,重写fromOperation方法,向返回的CodegenOperation对象的vendorExtensions中插入值:
@Override public CodegenOperation fromOperation(String path, String httpMethod, Operation operation, Map<String, Model> definitions, Swagger swagger) { CodegenOperation op = super.fromOperation(path, httpMethod, operation, definitions, swagger); // 静态赋值 op.vendorExtensions.put("op_custom_param", "当前接口专属自定义值"); // 也可直接读取yaml接口定义中x开头的自定义扩展字段 if (operation.getVendorExtensions().containsKey("x-custom-config")) { op.vendorExtensions.put("op_custom_param", operation.getVendorExtensions().get("x-custom-config")); } return op; }
模板中在{{#operation}}块内通过{{vendorExtensions.op_custom_param}}读取值即可。
3. 参数/模型级自定义变量
如果变量和单个参数、数据模型绑定,重写对应的fromParameter、fromModel方法,往返回的CodegenParameter、CodegenModel对象的vendorExtensions中插入值即可,使用方式和操作级变量一致。
内容的提问来源于stack exchange,提问作者palkarrohan
相关产品推荐
相关产品推荐

