Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更改SpringOpenAPI生成器maven插件生成接口的返回类型_Java_Spring_Spring Boot_Openapi_Openapi Generator - Fatal编程技术网

Java 更改SpringOpenAPI生成器maven插件生成接口的返回类型

Java 更改SpringOpenAPI生成器maven插件生成接口的返回类型,java,spring,spring-boot,openapi,openapi-generator,Java,Spring,Spring Boot,Openapi,Openapi Generator,我已经设法从.yaml开放api描述符文件生成了接口,但是,正如问题标题中所述,我希望将这些接口的响应类型从ResponseEntity更改为我自己的类型。基本上,接口没有此签名: ResponseEntity<Void> clearCache(); 我希望生成的接口尽可能简单 void clearCache(); 对于我自己定义的类也是一样,而不是responseEntityGetBook(stringISBN)我希望它只使用MyBook作为返回类型,所以它应该看起来像MyB

我已经设法从.yaml开放api描述符文件生成了接口,但是,正如问题标题中所述,我希望将这些接口的响应类型从ResponseEntity更改为我自己的类型。基本上,接口没有此签名:

 ResponseEntity<Void> clearCache();
我希望生成的接口尽可能简单

void clearCache();
对于我自己定义的类也是一样,而不是
responseEntityGetBook(stringISBN)
我希望它只使用
MyBook
作为返回类型,所以它应该看起来像
MyBook-getBook(字符串ISBN)
我目前用于openapi生成器插件的设置如下

        <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>

org.openapitools
openapi生成器maven插件
4.3.0
生成源
生成
我自己的服务be/src/main/resources/api-docs.yaml
春天
skipDefaultInterface=true
真的
真的
控制器
假的
dto
假的
假的

我们最近遇到了类似的挑战。您需要做的是调整模板。为此,您需要从OpenAPI项目中找到生成器的源模板。那就是你的情况

只需将其复制到您的
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>

${project.basedir}/src/main/resources/custom
${project.basedir}/src/main/resources/api.yaml
春天
src/gen/java/main

此外,还可以查看以获取有关该主题的更多信息

我不知道你为什么要这么做。您可以简单地将ResponseEntity想象为您的类型的包装器,增加了处理标准HTTP特性(如HTTP状态代码和头)的可能性。有关更多详细信息,请参阅。 在你的情况下,你只会这样做

ResponseEntity.noContent().build(); //void

ResponseEntity.ok(myBook) //to return your MyBook type

无法对此进行配置。请在中打开一个问题,以便openapi生成器社区可以帮助您解决此问题。您可能需要自定义模板以实现所需的功能
ResponseEntity.noContent().build(); //void

ResponseEntity.ok(myBook) //to return your MyBook type