基于OpenAPI 3.1生成Spring接口时,如何自定义接口名称?
解决OpenAPI Spring生成器接口命名为ApiApi的问题
针对路径以/api开头导致生成接口类名为ApiApi的问题,提供以下几种可行解决方式:
1. 通过OpenAPI扩展字段指定接口名
在OpenAPI YAML中给对应Tag添加x-codegen-name扩展字段,直接定义生成接口的类名前缀:
tags: - name: Welcome x-codegen-name: Welcome paths: /api/welcome/v1: get: tags: - Welcome # 接口其他配置
配置后生成的接口类会直接命名为WelcomeApi,完全不受路径前缀/api的影响。
2. 开启Tag优先的命名策略
在build.gradle的configOptions中添加useTagsForApiNaming配置,强制生成器优先使用Tag名称作为接口类名前缀,而非路径第一部分:
configOptions = [ interfaceOnly: 'true', useSpringBoot3: 'true', useJakartaEe: 'true', openApiNullable: 'false', generateBuilders: 'true', skipDefaultInterface: 'true', useTagsForApiNaming: 'true' // 新增配置 ]
开启后,只要接口的operation中指定了正确的Tag(如示例中的Welcome),生成器就会以此Tag名称生成WelcomeApi接口类。
3. 自定义生成模板(进阶方案)
如果上述方案无法满足需求,可以自定义Spring生成器的模板来修改类名生成逻辑:
- 获取OpenAPI Generator官方提供的Spring生成器
api.mustache模板 - 修改模板中的类名生成逻辑,例如移除路径中的
/api前缀后再提取名称 - 在build.gradle中指定自定义模板目录:
configOptions = [ // 原有配置 templateDir: "$projectDir/custom-templates" // 指向自定义模板所在目录 ]
注意:若多个路径共享同一Tag,生成器会将这些路径合并到同一个接口类中,符合REST接口的分组设计。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

