当前位置: 首页 > 知识库问答 >
问题:

使用Gradle从Spring Boot中的Swagger OpenAPI生成RestClient存根

呼延凌
2023-03-14

与之相反:从Swagger/OpenAPI生成Spring MVC控制器

我需要将我的Spring Boot项目与远程服务器集成,以公开Swagger OpenAPI。我可以成功下载《狂妄自大》。jsondescriptor,但我希望在为许多Java方法生成REST存根方面获得一些自动帮助。我用的是Gradle。我更喜欢大摇大摆地做。json到我的项目中,既可以脱机构建(远程服务不公开),又可以利用Gradle的输入缓存。

到目前为止,我可以利用Gradle的招摇过市生成器来完成大部分工作。

我可以试试

apply plugin: 'org.hidetake.swagger.generator'

dependencies {
    swaggerCodegen 'io.swagger.codegen.v3:swagger-codegen-cli:3.0.5'  // or Swagger Codegen V3
    swaggerCodegen 'org.openapitools:openapi-generator-cli:3.3.4'     // or OpenAPI Generator
}

swaggerSources {
    remoteservice{
        inputFile = file("${project.rootDir}/gradle/swagger-remoteservice.json")
        code {
            language = 'spring'
        }
    }
}

输出是build/swagger-code-remoteservice中一个成熟的Gradle-Spring-Boot项目,其中还包含一个Spring-Boot可执行文件。

我必须复制我感兴趣的部分:

  • DTO。所有这些都是自动生成的,这是我提到的最大部分
  • *Api接口

然后,我必须实现一个Spring服务,利用RestTemboard来执行Swagger操作。由于有许多操作要执行,这将需要时间。

我必须编写的附加代码

public class ApiRestImpl implements Api, InitializingBean {


    private RestOperations restTemplate;


    @Override
    public void afterPropertiesSet() throws Exception {
        restTemplate = new RestTemplateBuilder()
             ... //authorization
                .build();
    }


    @Override
    public ResponseEntity<Item> getById(Integer id, Boolean bool) {
        UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(properties.getUrl() + "/api/v1/Items/{id}")
                .queryParam("bool", bool
        return restTemplate.getForEntity(
                uriBuilder.toUriString(),
                Item.class,
                id
        );
    }

}

我希望生成一个完全(或几乎完全)工作的客户端,可能基于restemplate。我可以在自己的调用代码中集成一些东西来执行REST操作。

我可以看到Spring Boot项目使用一个build/generated目录,该目录包含在类路径中

在这种情况下,我不喜欢在运行时生成并最终扫描控制器,所以我不得不将输出复制到源目录。

共有1个答案

吴高洁
2023-03-14

您可以尝试使用OpenAPI gradle插件。java客户端生成器有一个库选项“restemplate”。

 类似资料:
  • 我被要求为一门大学课程实现一些gRPC类,在从一个源proto文件生成java类时遇到了一些问题。 首先是一些背景知识:这是一项相当基本的服务,有一个简单的方法,可以接收id并返回电话和电子邮件。这是原始文件(BuscarData表示获取数据,很抱歉没有翻译完!): 我的想法是用gradle插件生成类。我的身材。格拉德尔: 据我所知,一切都在那里:grpc和protoc依赖项,以及使protoc能

  • 我正在尝试将QueryDSL、Gradle和Springboot集成到title的版本中。我将annotationProcessors添加到gradle中,但Intellij仍然没有生成QClasses。我尝试了社区的建议来使用插件“gradle”。插件。通用域名格式。埃沃克。格拉德尔。插件:querydsl plugin'但这没有帮助。

  • Spring RestDocs可用于为具有Spring MockMvc或RestEasy的HTTP API生成文档(例如,asciidoctor格式)。在生成API文档的同时,还可以使用Spring Cloud Contract WireMock生成WireMock存根。只需编写正常的RestDocs测试用例,并使用@AutoConfigureRestDocs在restdocs输出目录中自动存储存

  • OSGI-INF/serviceComponent.xml可以使用maven scr felix插件通过添加依赖项生成,如 但对于格雷德尔来说,我无法生成。。我已尝试添加 这是一个错误。捷豹路虎主页。找不到gradle。 我做错了什么??? 基本上,我需要依赖项来添加gradle以生成servicecomponent。xml

  • Java11已经取消了对JAXB和xjc等工具的支持,这些工具从XSD模式生成Java文件。我在Gradle中找不到很多xjc代的例子,并尝试了一些选项,但到目前为止运气不佳。另外,在SpringBootGradle项目中应该添加哪些依赖项来提供对JAXB的全面支持?