如何让openapi-generator将长命名Dto简化为MyDto?
解决OpenAPI Generator生成过长DTO名称的问题
当你的OpenAPI规格文件里定义了Abc.Def.MyDto这类带点分隔的命名,生成后变成冗长的AbcDefMyDto,可以用以下几种方式简化成MyDto:
1. 直接修改OpenAPI规格文件
直接在open-api-spec.json的definitions节点下,把Abc.Def.MyDto的键名改成MyDto,同时检查所有引用该DTO的地方(比如$ref路径),同步更新为#/definitions/MyDto。这种方法最简单直接,生成工具会直接使用修改后的名称作为类名。
2. 使用自定义配置文件映射名称
创建一个config.json文件,通过modelNameMapping配置项手动映射长名称到短名称:
{ "modelNameMapping": { "Abc.Def.MyDto": "MyDto", // 可添加更多需要映射的DTO "Xyz.Another.LongDto": "AnotherDto" } }
然后修改生成命令,加上-c参数指定配置文件:
docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate -i local/open-api-spec.json -g typescript-fetch -o /local/out/Typescript -c /local/config.json
3. 自定义模板批量处理
如果有大量这类带前缀的DTO需要统一处理,可以自定义生成模板:
- 先导出TypeScript-Fetch的默认模板到本地:
docker run --rm openapitools/openapi-generator-cli author template -g typescript-fetch -o /local/templates - 找到模板中的
model.mustache文件,修改类名生成逻辑,比如截取名称中最后一个.后面的部分作为类名。 - 生成时通过
-t参数指定自定义模板目录:docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate -i local/open-api-spec.json -g typescript-fetch -o /local/out/Typescript -t /local/templates
内容的提问来源于stack exchange,提问作者Hidden
相关产品推荐
相关产品推荐

