Spring MVC 开放式API 3.0.2| Spring服务器生成器|API/控制器接口命名

6psbrbz9  于 2022-11-14  发布在  Spring
关注(0)|答案(1)|浏览(90)

我正在尝试为OpenApi3.0.2规范生成一个服务器端SpringMVC代码。
这是其中一条路径的样子:

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的接口,但我不希望它被命名为InventoryApi。我们有什么选项来控制生成的控制器接口?

jhdbpxl9

jhdbpxl91#

'useTags'创建接口和控制器类名
在插件配置中设置useTags configOption解决了我的问题:

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

相关问题