Изменить типы возвращаемых данных для интерфейсов, сгенерированных openapi-generator-maven-plugin Spring - PullRequest
0 голосов
/ 28 апреля 2020

Мне удалось сгенерировать интерфейсы из файла дескриптора open-api .yaml, но, как и в заголовке вопроса, я бы хотел изменить тип ответа этих интерфейсов с ResponseEntity на мои собственные типы. В основном вместо интерфейса, имеющего эту подпись:

 ResponseEntity<Void> clearCache();

для метода, который реализован в основном следующим образом:

public void clearCache(){ //do something}

Я бы хотел, чтобы сгенерированный интерфейс был таким же простым, как

void clearCache();

То же самое для моих собственных определенных классов вместо ResponseEntity<MyBook> getBook(String ISBN); Я хочу, чтобы он просто использовал MyBook в качестве возвращаемого типа, поэтому он должен выглядеть примерно так: MyBook getBook(String 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>

1 Ответ

0 голосов
/ 02 мая 2020

Недавно у нас была похожая проблема. Что вам нужно сделать, это настроить шаблон. Для этого вам нужно будет найти исходный шаблон из проекта 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>

Также посмотрите эту шаблонную документацию для больше информации по теме.

...