java - 更改 Spring openapi-generator-maven-plugin 生成的接口的返回类型
问题描述
我已经设法从 .yaml open-api 描述符文件生成接口,但是,如问题标题所示,我希望将这些接口的响应类型从 ResponseEntity 更改为我自己的类型。基本上不是具有此签名的接口:
ResponseEntity<Void> clearCache();
对于基本上以这种方式实现的方法:
public void clearCache(){ //do something}
我希望生成的界面尽可能简单
void clearCache();
我自己定义的类也是如此,而不是ResponseEntity<MyBook> getBook(String ISBN);
我希望它只MyBook
用作返回类型,所以它应该看起来像MyBook getBook(String ISBN);
我用于 openapi-generator 插件的当前设置是
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.3.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>my-own-service-be/src/main/resources/api-docs.yaml</inputSpec>
<generatorName>spring</generatorName>
<additionalProperties>
<additionalProperty>skipDefaultInterface=true</additionalProperty>
<additionalProperty>interfaceOnly=true</additionalProperty>
</additionalProperties>
<generateApis>true</generateApis>
<apiPackage>controller</apiPackage>
<supportingFilesToGenerate>false</supportingFilesToGenerate>
<modelPackage>dto</modelPackage>
<generateModelTests>false</generateModelTests>
<generateApiTests>false</generateApiTests>
</configuration>
</execution>
</executions>
</plugin>
解决方案
我们最近遇到了类似的挑战。您需要做的是调整模板。为此,您需要从 OpenAPI 项目中为您的生成器找到源模板。在你的情况下就是这个api.mustache
文件。
只需将其复制到您的src/main/resources/
文件夹(可能在名为 的子文件夹中custom
)并根据您的需要进行调整,即替换响应类型。
然后,您将需要调整您pom.xml
的自定义模板文件以实际使用:
<configuration>
<!-- The following line is crucial: -->
<templateDirectory>${project.basedir}/src/main/resources/custom</templateDirectory>
<inputSpec>${project.basedir}/src/main/resources/api.yaml</inputSpec>
<generatorName>spring</generatorName>
<configOptions>
<sourceFolder>src/gen/java/main</sourceFolder>
</configOptions>
</configuration>
另请查看此模板文档以获取有关该主题的更多信息。
推荐阅读
- java - Jersey 2.32 IllegalArgumentException jersey.repackaged.org.objectweb.asm.ClassVisitor
- android - Firestore - 如何在地图的所有条目上创建复合索引?
- php - 致命错误:未捕获错误:使用 PHP 7.2 在统一服务器中调用未定义函数 mb_detect_encoding()
- python - InvalidArgumentError:从形状为 [56,9] 的张量中指定形状为 [60,9] 的列表
- discord.py - 如何使用机器人发送消息并且在重新启动后不再发送?不和谐
- json - 有没有办法只用 JsonPath 选择所有子数组
- azure - 自定义域验证是否在 Azure 订阅中共享?
- mysql - 如何在 OpenCart 中列出所有商店、类别和产品?
- java - 为什么我得到对象引用一个未保存的瞬态实例
- android - Flutter Release APK 错误(未找到 ttcIndex、未找到 fontVariationSettings 等)