仅从 API 生成一个特定端点

问题描述 投票:0回答:1

我当前在

build.gradle
中的 OpenAPI 生成器设置。

def openApiGeneratorConfig = {
    classpath configurations.openApiGenerator
    systemProperties = ["apis": "", "models": ""]
    mainClass = 'org.openapitools.codegen.OpenAPIGenerator'
    args 'generate'
    args '-o', "$rootDir/external"
    args '-t', "$rootDir/external/src/main/resources/codegen/templates/"
    args '--skip-validate-spec'
    args "--import-mappings", "Instant=java.time.Instant,YearMonth=java.time.YearMonth,LocalDateTime=java.time.LocalDateTime"
    args "--type-mappings", "double=BigDecimal"
}

def configFilesRoute = "$rootDir/external/src/main/resources/config/swagger"

task generateExternalApiClient(type: JavaExec) {
    configure openApiGeneratorConfig
    systemProperties = ["apis": "ContractSearch#findContractByCustomerId"]
    args "-i", "http://localhost:9901/v2/api-docs"
    args "-c", "$configFilesRoute/loan.json"
}

ContractSearch
(Api)中,我有很多端点(操作),我只需要生成一个特定端点。 因此,在此之前(迁移到 OpenAPI Generator),我使用了 Swagger CodeGen,如果我使用符号 # 作为分隔符指定 api 之后的操作,那么它工作得很好,并且它只生成一个特定的端点。 但现在迁移到 OpenAPI Generator 后,这种行为不起作用。我用谷歌搜索并检查了文档,没有找到我的问题的任何答案。

Java 17。Spring Boot 2.7、Gradle 8.2、OpenAPI 生成器 CLI 6.6.0

我尝试在 OpenAPI 配置中添加差异参数,但也没有帮助我。

java spring-boot gradle openapi openapi-generator
1个回答
0
投票

自 OpenApi 生成器版本 7.4 起,您可以使用 FILTER 类型的 openapiNormalizer 指定要生成的端点。一种方便的方法是通过操作 ID 过滤端点。 请参阅文档了解更多信息。

java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate -g java -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml -o /tmp/java-okhttp/ --openapi-normalizer FILTER="operationId:addPet|getPetById"

在您的示例中,您需要添加

args "--openapi-normalizer", "FILTER=operationId:myEndpoint"

作为参考,maven 插件是:

  <plugin>
        <groupId>org.openapitools</groupId>
        <artifactId>openapi-generator-maven-plugin</artifactId>
        <version>7.4.0</version>
        <executions>
          <execution>
            <id>generate-server</id>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              ...
              <openapiNormalizer>FILTER=operationId:createNamesContactPerson</openapiNormalizer>
              <configOptions>
               ...
              </configOptions>
            </configuration>
          </execution>
        </executions>
      </plugin>
© www.soinside.com 2019 - 2024. All rights reserved.