2

目前我正在使用 quarkus 开发一个应用程序。我有一个描述所有内容的 openapi yaml 文件。我想知道是否有 quarkus 扩展或工具,我可以使用它们生成将产生和使用相同文件格式的其余端点。

4

3 回答 3

4

只要您不需要任何 Quarkus 特定功能(例如响应式、@Cached、..),那么 REST 端点就是标准的 JAXRS 端点,您可以使用 openapi 生成器为您生成接口和模型 POJO。之后,您只需实现生成的接口:

openapi-cli generate -i url_or_path_to_your_api_schema.yml -g jaxrs-spec --skip-validate-spec --additional-properties=interfaceOnly=true,useSwaggerAnnotations=false

上面的命令将只为 API 中定义的任何模型生成 JAXRS 端点接口任何 POJO 类。您可以将它们复制到您的项目并实现 iface。

您可以使用openapi 生成器插件将其集成到您的 Maven 构建中,而不是手动调用 cli :

<plugin>
    <groupId>org.openapitools</groupId>
    <artifactId>openapi-generator-maven-plugin</artifactId>
       <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <inputSpec>${project.basedir}/src/main/resources/yourapi.yaml</inputSpec>
                <generatorName>jaxrs-spec</generatorName>
                <additionalProperties>interfaceOnly=true,useSwaggerAnnotations=false</additionalProperties>
                <configOptions>
                   <sourceFolder>src/gen/java/main</sourceFolder>
                </configOptions>
            </configuration>
        </execution>
    </executions>
</plugin>

如果您喜欢的话,还有一个完整的 Quarkus 项目存根生成器:(作为生成器的--library=quarkus选项jaxrs-spec

在OpenApi 生成器的文档中,您可能希望配置更多选项。您还可以自定义代码模板(小胡子),以防内置模板遗漏您需要的东西,尽管此时您可能会考虑创建自己的生成器。

如果您需要一个客户端并且您可以使用标准的 Microprofile REST 客户端方法,那么 Openapi 生成器也可以正常工作:

openapi-cli generate -i path_to_your_openapi_schema.yml -g java --library microprofile

OpenApi 生成器是一个复杂的项目,并非没有问题,因此最好 Quarkus 社区为服务器和客户端代码生成器采用自定义优化工具,以充分利用所有功能,例如反应式客户端......

于 2021-05-21T14:20:38.993 回答
1

目前,Quarkus 中没有官方扩展/工具可以从 OpenAPI 文件生成 JAX-RS 存根。

但是,这已在 Quarkus 开发邮件列表中进行了讨论,您可以查看并提供反馈:https ://groups.google.com/g/quarkus-dev/c/f8hJRm8oWbQ/m/UW_kQ7UEAwAJ

请注意,有一个 JAX-RS 的 OpenAPI 生成器,您可以使用它来生成符合 JAX-RS 的端点,该端点只需在 Quarkus 中进行少量修改即可工作:https ://openapi-generator.tech/docs/generators /jaxrs 规范

于 2021-05-21T12:19:47.417 回答
0

我们目前正在开发官方的 OpenAPI Generator 扩展:https ://github.com/quarkiverse/quarkus-openapi-generator#readme

如果您有兴趣,请看一看。我们很乐意听取社区的反馈。

于 2022-02-16T13:40:13.967 回答