【问题标题】:How to generate resttemplate based on yml file?如何根据yml文件生成resttemplate?
【发布时间】:2020-11-12 10:32:18
【问题描述】:

我使用开放的 openapi-generator-gradle-plugin。这是我的 build.gradle:

buildscript {
    repositories {
        mavenLocal()

        jcenter {
            url "http://nexus.ca.sbrf.ru:8081/nexus/content/repositories/jcenter"
        }
        maven {
            url "http://nexus.ca.sbrf.ru:8081/nexus/content/repositories/central"
        }
        maven { url 'http://nexus.ca.sbrf.ru:8081/nexus/content/repositories/Atlassian_proxy' }
        maven { url 'http://nexus.ca.sbrf.ru:8081/nexus/content/groups/public' }

        dependencies {
            classpath 'org.openapitools:openapi-generator-gradle-plugin:4.3.0'
            classpath "org.springframework.boot:spring-boot-gradle-plugin:2.2.1.RELEASE"
            classpath "io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE"
        }
    }
}


apply plugin: 'java'
apply plugin: 'org.openapi.generator'
apply plugin: "maven-publish"
apply plugin: "io.spring.dependency-management"
apply plugin: "org.springframework.boot"

dependencies {
    compile 'org.springframework:spring-context:5.3.0'
    compile 'org.springframework:spring-web:4.1.6.RELEASE'
    compile 'javax.servlet:javax.servlet-api:4.0.1'
    compile 'org.openapitools:jackson-databind-nullable:0.2.1'
    compile 'io.swagger:swagger-core:1.5.21'
    compile 'javax.annotation:javax.annotation-api:1.3.1'
}

openApiGenerate {
    generatorName = "spring"
    library = "resttemplate"
    inputSpec = "$rootDir/openapi-contracts/src/main/resources/openapi/api.yml".toString()
    outputDir = "$project.buildDir/generated/openapi"
    apiPackage = "ru.openapi.api.v1"
    modelPackage = "ru.openapi.model.v1"
    enablePostProcessFile = true
    configOptions = [
            dateLibrary         : "java8",
            useBeanValidation   : "true",
            enableBuilderSupport: "true",
            interfaceOnly       : "true",
            delegatePattern     : "true"
    ]
}

sourceSets {
    main {
        java {
            srcDirs "build/generated/openapi/src/main/java"
        }
    }
}

正在生成服务器代码,一切都很好,但我希望为它生成resttemplate。

为此我已经指出:

library = "resttemplate"

我收到此错误:

未知库:resttemplate 可用库: 弹簧靴 弹簧MVC 春云

我该如何解决这个问题?

【问题讨论】:

    标签: java spring gradle swagger openapi


    【解决方案1】:

    不确定如何用 gradle 来做,但在 maven 中会是这样的:

          <plugin>
                <groupId>org.openapitools</groupId>
                <artifactId>openapi-generator-maven-plugin</artifactId>
                <version>${openapi.plugin.version}</version>
                <executions>
                    <execution>
                        <id>${your-id}</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <skipIfSpecIsUnchanged>true</skipIfSpecIsUnchanged>
                            <inputSpec>${project.basedir}/swagger.json</inputSpec>
                            <generatorName>java</generatorName>
                            <library>resttemplate</library>
                            <apiPackage>your.package</apiPackage>
                            <modelPackage>your.package</modelPackage>
                            <generateApis>true</generateApis>
                            <generateApiDocumentation>false</generateApiDocumentation>
                            <generateApiTests>false</generateApiTests>
                            <generateModels>true</generateModels>
                            <generateModelDocumentation>false</generateModelDocumentation>
                            <generateModelTests>false</generateModelTests>
                            <generateSupportingFiles>true</generateSupportingFiles>
                            <configOptions>
                                <sourceFolder>src/main/java</sourceFolder>
                                <java8>true</java8>
                                <dateLibrary>java8</dateLibrary>
                                <useTags>true</useTags>
                                <interfaceOnly>false</interfaceOnly>
                            </configOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
    

    希望对您有所帮助。 也许问题是resttemplate在spring-web依赖中

    【讨论】:

      【解决方案2】:

      要使用 resttemplate 库,您必须将 generatorName 设置为 "java"

      【讨论】:

        【解决方案3】:

        一种解决方案是使用spring 生成器,它会为您提供带注释的接口和类。

        created a library(和there are others)认为,给定带注释的接口,将在运行时构造一个类型安全的客户端。

        final StoreApi storeApi = SpringRestTemplateClientBuilder
          .create(StoreApi.class)
          .setRestTemplate(restTemplate)
          .setUrl("https://...")
          .build();
        
        // This will become a rest-call
        storeApi.deleteOrder(1234L);
        

        【讨论】:

          猜你喜欢
          • 2012-05-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-25
          • 1970-01-01
          • 2016-08-13
          • 2012-02-26
          • 2011-01-16
          • 1970-01-01
          相关资源
          最近更新 更多