3

我正在尝试为 OpenApi 3.0.2 规范锻炼生成的服务器端 Spring MVC 代码。

这就是“路径”之一的样子:-

paths:
  /api/v1/int/integrations/{some-path-variable}/some-action:
    get:
      summary: Summary
      description: How to change the generated Api/Controller class name?
      operationId: methodName
      tags:
        - inventory
      parameters:
        - name: Authorization
      other details....

使用配置为的 Maven 插件生成服务器端代码:-

    <plugin>
        <groupId>org.openapitools</groupId>
        <artifactId>openapi-generator-maven-plugin</artifactId>               
        <version>4.1.0</version>           

        <executions>
            <execution>
                <goals>
                    <goal>generate</goal>
                </goals>
                <configuration>
                    <inputSpec>${project.basedir}/src/main/resources/open-api/myapi.yaml</inputSpec>
                    <generatorName>spring</generatorName>
                    <library>spring-boot</library>
                    <output>${project.build.directory}/generated-openapi/spring</output>
                    <generateApis>true</generateApis>
                    <addCompileSourceRoot>true</addCompileSourceRoot>
                    <artifactVersion>${project.version}</artifactVersion>
                    <groupId>com.company.division</groupId>
                    <artifactId>myapi-api</artifactId>
                    <generateApiTests>true</generateApiTests>
                    <modelPackage>com.company.division.myapi.generated.model</modelPackage>
                    <apiPackage>com.company.division.myapi.generated.api</apiPackage>
                    <generateApiDocumentation>true</generateApiDocumentation>

                    <configOptions>
                        <dateLibrary>java8</dateLibrary>
                        <java8>true</java8>
                        <interfaceOnly>true</interfaceOnly>
                        <reactive>false</reactive>
                        <useBeanValidation>true</useBeanValidation>
                        <performBeanValidation>true</performBeanValidation>
                        <useOptional>false</useOptional>
                        <serviceInterface>true</serviceInterface>
                        <serviceImplementation>false</serviceImplementation>
                    </configOptions>
                </configuration>

            </execution>
        </executions>
    </plugin>

从插件配置中可以看出,我只对生成模型类和 Spring 控制器接口/API 接口感兴趣。

问题

对于提到的 OpenAPI 规范,生成的 MVC 控制器接口被命名为ApiApi. 我猜这是源自路径的开始部分。我可以摆脱这/api/v1/int部分,但这会生成名为的接口,IntegrationsApi但我不希望它被命名为 say InventoryApi。我们有什么选项来控制生成的控制器界面?

4

1 回答 1

6

'useTags' 创建接口和控制器类名

在插件配置中设置useTagsconfigOption 解决了我的问题:-

                        <configuration>
                            <configOptions>
                                <useTags>true</useTags>
                                <dateLibrary>java8</dateLibrary>
                                <java8>true</java8>
                                <interfaceOnly>true</interfaceOnly>
                                <reactive>false</reactive>
                                <useBeanValidation>true</useBeanValidation>
                                <performBeanValidation>true</performBeanValidation>
                                <useOptional>false</useOptional>
                                <serviceInterface>true</serviceInterface>
                                <serviceImplementation>false</serviceImplementation>
                            </configOptions>
                        </configuration>
于 2019-08-31T06:28:21.830 回答