本文介紹了更改Spring Openapi-Generator-maven-plugin生成的接口的返回類型的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我已經(jīng)設(shè)法從.yaml開放API描述符文件生成了接口,但是,正如問題標(biāo)題中所述,我希望將這些接口的響應(yīng)類型從ResponseEntity更改為我自己的類型。基本上不是具有以下簽名的接口:
ResponseEntity<Void> clearCache();
對于基本上是這樣實(shí)現(xiàn)的方法:
public void clearCache(){ //do something}
我希望生成的接口與
一樣簡單
void clearCache();
我自己定義的類也是這樣,而不是ResponseEntity<MyBook> getBook(String ISBN);
,我希望它只使用MyBook
作為返回類型,因此它應(yīng)該類似于
我當(dāng)前對Openapi生成器插件使用的設(shè)置是
<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>
推薦答案
我們最近遇到了類似的挑戰(zhàn)。您需要做的是調(diào)整模板。為此,您需要從您的生成器的OpenAPI項(xiàng)目中找到源代碼模板。對于您來說,這將是this api.mustache
file。
只需將其復(fù)制到您的src/main/resources/
文件夾(可能位于名為custom
的子文件夾中),并根據(jù)您的需要進(jìn)行調(diào)整,即替換響應(yīng)類型。
然后,您需要調(diào)整pom.xml
,以便實(shí)際使用您的自定義模板文件:
<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>
有關(guān)該主題的更多信息,請參閱this templating documentation。
這篇關(guān)于更改Spring Openapi-Generator-maven-plugin生成的接口的返回類型的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,